/*
 * Created by Microsoft VCBU Internal YACC from "asmparse.y"
 */

#line 2 "asmparse.y"

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

//
// File asmparse.y
//
#include "ilasmpch.h"

#include "grammar_before.cpp"


#line 16 "asmparse.y"

#define UNION 1
typedef union  {
        CorRegTypeAttr classAttr;
        CorMethodAttr methAttr;
        CorFieldAttr fieldAttr;
        CorMethodImpl implAttr;
        CorEventAttr  eventAttr;
        CorPropertyAttr propAttr;
        CorPinvokeMap pinvAttr;
        CorDeclSecurity secAct;
        CorFileFlags fileAttr;
        CorAssemblyFlags asmAttr;
        CorAssemblyFlags asmRefAttr;
        CorTypeAttr exptAttr;
        CorManifestResourceFlags manresAttr;
        double*  float64;
        __int64* int64;
        __int32  int32;
        char*    string;
        BinStr*  binstr;
        Labels*  labels;
        Instr*   instr;         // instruction opcode
        NVPair*  pair;
        pTyParList typarlist;
        mdToken token;
        TypeDefDescr* tdd;
        CustomDescr*  cad;
        unsigned short opcode;
} YYSTYPE;
# define ERROR_ 257
# define BAD_COMMENT_ 258
# define BAD_LITERAL_ 259
# define ID 260
# define DOTTEDNAME 261
# define QSTRING 262
# define SQSTRING 263
# define INT32 264
# define INT64 265
# define FLOAT64 266
# define HEXBYTE 267
# define TYPEDEF_T 268
# define TYPEDEF_M 269
# define TYPEDEF_F 270
# define TYPEDEF_TS 271
# define TYPEDEF_MR 272
# define TYPEDEF_CA 273
# define DCOLON 274
# define ELIPSIS 275
# define VOID_ 276
# define BOOL_ 277
# define CHAR_ 278
# define UNSIGNED_ 279
# define INT_ 280
# define INT8_ 281
# define INT16_ 282
# define INT32_ 283
# define INT64_ 284
# define FLOAT_ 285
# define FLOAT32_ 286
# define FLOAT64_ 287
# define BYTEARRAY_ 288
# define UINT_ 289
# define UINT8_ 290
# define UINT16_ 291
# define UINT32_ 292
# define UINT64_ 293
# define FLAGS_ 294
# define CALLCONV_ 295
# define MDTOKEN_ 296
# define OBJECT_ 297
# define STRING_ 298
# define NULLREF_ 299
# define DEFAULT_ 300
# define CDECL_ 301
# define VARARG_ 302
# define STDCALL_ 303
# define THISCALL_ 304
# define FASTCALL_ 305
# define CLASS_ 306
# define TYPEDREF_ 307
# define UNMANAGED_ 308
# define FINALLY_ 309
# define HANDLER_ 310
# define CATCH_ 311
# define FILTER_ 312
# define FAULT_ 313
# define EXTENDS_ 314
# define IMPLEMENTS_ 315
# define TO_ 316
# define AT_ 317
# define TLS_ 318
# define TRUE_ 319
# define FALSE_ 320
# define _INTERFACEIMPL 321
# define VALUE_ 322
# define VALUETYPE_ 323
# define NATIVE_ 324
# define INSTANCE_ 325
# define SPECIALNAME_ 326
# define FORWARDER_ 327
# define STATIC_ 328
# define PUBLIC_ 329
# define PRIVATE_ 330
# define FAMILY_ 331
# define FINAL_ 332
# define SYNCHRONIZED_ 333
# define INTERFACE_ 334
# define SEALED_ 335
# define NESTED_ 336
# define ABSTRACT_ 337
# define AUTO_ 338
# define SEQUENTIAL_ 339
# define EXPLICIT_ 340
# define ANSI_ 341
# define UNICODE_ 342
# define AUTOCHAR_ 343
# define IMPORT_ 344
# define ENUM_ 345
# define VIRTUAL_ 346
# define NOINLINING_ 347
# define AGGRESSIVEINLINING_ 348
# define NOOPTIMIZATION_ 349
# define AGGRESSIVEOPTIMIZATION_ 350
# define UNMANAGEDEXP_ 351
# define BEFOREFIELDINIT_ 352
# define STRICT_ 353
# define RETARGETABLE_ 354
# define WINDOWSRUNTIME_ 355
# define NOPLATFORM_ 356
# define METHOD_ 357
# define FIELD_ 358
# define PINNED_ 359
# define MODREQ_ 360
# define MODOPT_ 361
# define SERIALIZABLE_ 362
# define PROPERTY_ 363
# define TYPE_ 364
# define ASSEMBLY_ 365
# define FAMANDASSEM_ 366
# define FAMORASSEM_ 367
# define PRIVATESCOPE_ 368
# define HIDEBYSIG_ 369
# define NEWSLOT_ 370
# define RTSPECIALNAME_ 371
# define PINVOKEIMPL_ 372
# define _CTOR 373
# define _CCTOR 374
# define LITERAL_ 375
# define NOTSERIALIZED_ 376
# define INITONLY_ 377
# define REQSECOBJ_ 378
# define CIL_ 379
# define OPTIL_ 380
# define MANAGED_ 381
# define FORWARDREF_ 382
# define PRESERVESIG_ 383
# define RUNTIME_ 384
# define INTERNALCALL_ 385
# define _IMPORT 386
# define NOMANGLE_ 387
# define LASTERR_ 388
# define WINAPI_ 389
# define AS_ 390
# define BESTFIT_ 391
# define ON_ 392
# define OFF_ 393
# define CHARMAPERROR_ 394
# define INSTR_NONE 395
# define INSTR_VAR 396
# define INSTR_I 397
# define INSTR_I8 398
# define INSTR_R 399
# define INSTR_BRTARGET 400
# define INSTR_METHOD 401
# define INSTR_FIELD 402
# define INSTR_TYPE 403
# define INSTR_STRING 404
# define INSTR_SIG 405
# define INSTR_TOK 406
# define INSTR_SWITCH 407
# define _CLASS 408
# define _NAMESPACE 409
# define _METHOD 410
# define _FIELD 411
# define _DATA 412
# define _THIS 413
# define _BASE 414
# define _NESTER 415
# define _EMITBYTE 416
# define _TRY 417
# define _MAXSTACK 418
# define _LOCALS 419
# define _ENTRYPOINT 420
# define _ZEROINIT 421
# define _EVENT 422
# define _ADDON 423
# define _REMOVEON 424
# define _FIRE 425
# define _OTHER 426
# define _PROPERTY 427
# define _SET 428
# define _GET 429
# define _PERMISSION 430
# define _PERMISSIONSET 431
# define REQUEST_ 432
# define DEMAND_ 433
# define ASSERT_ 434
# define DENY_ 435
# define PERMITONLY_ 436
# define LINKCHECK_ 437
# define INHERITCHECK_ 438
# define REQMIN_ 439
# define REQOPT_ 440
# define REQREFUSE_ 441
# define PREJITGRANT_ 442
# define PREJITDENY_ 443
# define NONCASDEMAND_ 444
# define NONCASLINKDEMAND_ 445
# define NONCASINHERITANCE_ 446
# define _LINE 447
# define P_LINE 448
# define _LANGUAGE 449
# define _CUSTOM 450
# define INIT_ 451
# define _SIZE 452
# define _PACK 453
# define _VTABLE 454
# define _VTFIXUP 455
# define FROMUNMANAGED_ 456
# define CALLMOSTDERIVED_ 457
# define _VTENTRY 458
# define RETAINAPPDOMAIN_ 459
# define _FILE 460
# define NOMETADATA_ 461
# define _HASH 462
# define _ASSEMBLY 463
# define _PUBLICKEY 464
# define _PUBLICKEYTOKEN 465
# define ALGORITHM_ 466
# define _VER 467
# define _LOCALE 468
# define EXTERN_ 469
# define _MRESOURCE 470
# define _MODULE 471
# define _EXPORT 472
# define LEGACY_ 473
# define LIBRARY_ 474
# define X86_ 475
# define AMD64_ 476
# define ARM_ 477
# define ARM64_ 478
# define MARSHAL_ 479
# define CUSTOM_ 480
# define SYSSTRING_ 481
# define FIXED_ 482
# define VARIANT_ 483
# define CURRENCY_ 484
# define SYSCHAR_ 485
# define DECIMAL_ 486
# define DATE_ 487
# define BSTR_ 488
# define TBSTR_ 489
# define LPSTR_ 490
# define LPWSTR_ 491
# define LPTSTR_ 492
# define OBJECTREF_ 493
# define IUNKNOWN_ 494
# define IDISPATCH_ 495
# define STRUCT_ 496
# define SAFEARRAY_ 497
# define BYVALSTR_ 498
# define LPVOID_ 499
# define ANY_ 500
# define ARRAY_ 501
# define LPSTRUCT_ 502
# define IIDPARAM_ 503
# define IN_ 504
# define OUT_ 505
# define OPT_ 506
# define _PARAM 507
# define _OVERRIDE 508
# define WITH_ 509
# define NULL_ 510
# define HRESULT_ 511
# define CARRAY_ 512
# define USERDEFINED_ 513
# define RECORD_ 514
# define FILETIME_ 515
# define BLOB_ 516
# define STREAM_ 517
# define STORAGE_ 518
# define STREAMED_OBJECT_ 519
# define STORED_OBJECT_ 520
# define BLOB_OBJECT_ 521
# define CF_ 522
# define CLSID_ 523
# define VECTOR_ 524
# define _SUBSYSTEM 525
# define _CORFLAGS 526
# define ALIGNMENT_ 527
# define _IMAGEBASE 528
# define _STACKRESERVE 529
# define _TYPEDEF 530
# define _TEMPLATE 531
# define _TYPELIST 532
# define _MSCORLIB 533
# define P_DEFINE 534
# define P_UNDEF 535
# define P_IFDEF 536
# define P_IFNDEF 537
# define P_ELSE 538
# define P_ENDIF 539
# define P_INCLUDE 540
# define CONSTRAINT_ 541
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
#ifndef YYFARDATA
#define	YYFARDATA	/*nothing*/
#endif
#if ! defined YYSTATIC
#define	YYSTATIC	/*nothing*/
#endif
#if ! defined YYCONST
#define	YYCONST	/*nothing*/
#endif
#ifndef	YYACT
#define	YYACT	yyact
#endif
#ifndef	YYPACT
#define	YYPACT	yypact
#endif
#ifndef	YYPGO
#define	YYPGO	yypgo
#endif
#ifndef	YYR1
#define	YYR1	yyr1
#endif
#ifndef	YYR2
#define	YYR2	yyr2
#endif
#ifndef	YYCHK
#define	YYCHK	yychk
#endif
#ifndef	YYDEF
#define	YYDEF	yydef
#endif
#ifndef	YYV
#define	YYV	yyv
#endif
#ifndef	YYS
#define	YYS	yys
#endif
#ifndef	YYLOCAL
#define	YYLOCAL
#endif
#ifndef YYR_T
#define	YYR_T	int
#endif
typedef	YYR_T	yyr_t;
#ifndef YYEXIND_T
#define	YYEXIND_T	unsigned int
#endif
typedef	YYEXIND_T	yyexind_t;
#ifndef YYOPTTIME
#define	YYOPTTIME	0
#endif
# define YYERRCODE 256

#line 2061 "asmparse.y"


#include "grammar_after.cpp"
YYSTATIC YYCONST short yyexca[] = {
#if !(YYOPTTIME)
-1, 1,
#endif
	0, -1,
	-2, 0,
#if !(YYOPTTIME)
-1, 452,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 622,
#endif
	274, 554,
	47, 554,
	-2, 229,
#if !(YYOPTTIME)
-1, 643,
#endif
	40, 309,
	60, 309,
	-2, 554,
#if !(YYOPTTIME)
-1, 665,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 690,
#endif
	274, 554,
	47, 554,
	-2, 515,
#if !(YYOPTTIME)
-1, 809,
#endif
	123, 234,
	-2, 554,
#if !(YYOPTTIME)
-1, 836,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 961,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 994,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 995,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1323,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1324,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1331,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1339,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1465,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1497,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1564,
#endif
	41, 537,
	-2, 310,
#if !(YYOPTTIME)
-1, 1581,
#endif
	41, 537,
	-2, 310,

};

# define YYNPROD 843
#if YYOPTTIME
YYSTATIC YYCONST yyexind_t yyexcaind[] = {
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    4,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    8,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   20,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   30,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   34,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   42,   46,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   50,   54,    0,    0,    0,    0,    0,
    0,   58,    0,    0,    0,    0,    0,    0,    0,   62,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   66,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   70,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   74,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   78
};
#endif
# define YYLAST 3922

YYSTATIC YYCONST short YYFARDATA YYACT[] = {
  703, 1484,  414, 1416, 1133,  640,  660,  191, 1482, 1485,
  886, 1036,  971, 1483,  702,  788,  779,  885,  974,  729,
   73,   75,  150,  625, 1521,  536, 1417,  792,  755,  190,
  760,  757,  478,  176,  107,  972, 1146,  110,  106,  694,
 1077,  275,  860,  604,  662,  599,  273,   78,   81,  219,
   44,   24,  780,  262,  516,  214,  204,    7,  301,  188,
  654,   76,    6,  991,   85,    5, 1569,    3, 1206, 1253,
  220, 1125,   18, 1257,  115,  677, 1069,  264,  153, 1254,
  307,  133,   74,  178,  179,  180,  181,  272, 1123,  218,
  136,   10,  221,  300,   26,  137, 1070,   98,  278,  139,
  217, 1124,   17,  202,  203,  581,  269,   74,  719,  716,
  322,  265,  461,  113,  112,  700,  520,  939,  940,  352,
  343,   88,   87,  353,   89,  462, 1255,  452, 1025,  268,
  676,  338,   56,  537,   68, 1243, 1244,  305,  591,   88,
   87,  357,   89,  277,  225,  327,  277,  368,  339, 1031,
  342,  938,  361,  366,  185,  154, 1241, 1242,   98,  360,
  359,  358,  277,   56,   88,   87,  345,   89,  656, 1573,
  192,  782,  351,  783,  348,  365, 1537,  277,   86, 1039,
  369,  310,  312,  314,  316,  318,  374,  277,  362,  198,
 1038,  364,  699,  373,  199,  271,  200,  698, 1432,   84,
  105,  379,  201,  417,  418,  363,  376, 1138, 1139,  450,
  387,  451,  615,   88,   87,  186,   89,  388,  480,  195,
  814, 1071,  663, 1505,  456,  767, 1279,  457, 1578,  999,
  258,  473,  475,  416,  196, 1496,  484,  655,  481,  482,
  470,  491,  468,  472,  471,  501,  346,  216,  495, 1329,
  597, 1214,  192,  493,  441,   24,  833,  476,  479,  375,
  433,    7, 1278,   56,  801,  813,  486,  432,  664,   74,
  428,  492,  429,  483,  541,  436,   18,  641,  642,  487,
  586,  376,  585,  584,  544,   56, 1354, 1355, 1356,  587,
  941,  942,  267,  943,  435,   10,  154,  442,   26, 1337,
 1336, 1335, 1334,  494,  791,  434,   17,  777,  542,  572,
   74,  545,  714,  668,  575,  268,  576, 1249,  577, 1517,
  499,  600,  862,  863,  864,  579,  580,  371,  370, 1009,
  116,  511,  511,  528,  534,  108,  574,  372,  258,  571,
  266,  549,  573,  192,  488,  367,   88,   87,  154,   89,
  321, 1559,  601,  512,  512,  529,  535,   80,   79,  480,
  198,  505,  152,  410, 1435,  199,   74,  200,  613, 1560,
  348,  582,  583,  201,   74, 1130,  480,   46,  498,  481,
  482,  375,  621,   88,  596,  459,   89,  624,   80,   79,
  195, 1563,  607,  608,  609,  610,  481,  482, 1562,  606,
  420,  614,  421,  422,  423,  196,  745, 1368,  612,  474,
  611,  619,  620,  622,  485,  340,  341,  678, 1352,  639,
  644,   74, 1561,  500,   88,   87, 1248,   89, 1128,  955,
   56, 1153,  600,  595,  784,  135, 1154,  759,  649,  650,
  354,  355,  356,  652,  635, 1507, 1536,  348,  884,  182,
  643,  785,   56,  704, 1138, 1139,  666, 1408,  855,  321,
  177,   88,  674, 1140,   89,   74,  669, 1531,  970, 1514,
  685,  682,  951,  347,  566,   88, 1246,   46,   89,   74,
  538, 1506, 1267,  569, 1528,  867, 1362,  747,   88,   87,
  689,   89,   74,  671,  673, 1192, 1358, 1142,  696,   88,
   87,  786,   89,  990,  989,  988,  588,  983,  982,  981,
  980,  758,  978,  979,  105,  706,  987,  986,  985,  984,
  537,  690, 1468,  977,  975,  651,  715, 1001, 1002, 1003,
 1004,   88,   87,  692,  954,  177,  376,  693,  453,  155,
  648,  705,   80,   79,  480,  683,  701,  546,  727,  707,
  805,   61,   62,   47,   63,  709,  803,  710,  713, 1256,
  861,  539,  460,  645,  481,  482,  718,  177, 1520,  647,
   56, 1530,   88,   87,  225,   89,   74,  723, 1191,  659,
  728,  646,  967,  730,  277, 1529,  724,  597,  725,  675,
  976,  720,   80,   79, 1129,  762,  679,  680,  681,  413,
  734,   82,  506, 1526,   56,  768,  769,   49,   50,   51,
   52,   53,   54,   55,   74,  639, 1262, 1258, 1259, 1260,
 1261,   74,  754, 1524,  601,  744,  733,  748,  749,  750,
 1013,   98, 1011, 1012,  787,  543,  502,   72,   49,   50,
   51,   52,   53,   54,   55,   74,  643,   74,  684, 1522,
  477,   61,   62,   47,   63,   88,   87,  542,   89,  807,
  808,  802,   71,  751,  752,  753,  812,  793,  821,   74,
  514,  825,  819,  826,  822,   74,  695,  216,   70,  830,
 1184, 1183, 1182, 1181,  156,  157,  158,  831,  804,  806,
   74,  809,   74,  815,  480,  773,  774,  775,  790,  325,
  841,  842,  823,  797,   69,  800,  818,   80,   79,   67,
  377,  824,  832,  324,  481,  482,  348,  348,  854,   88,
   87,  225,   89,  834,  858,   88,   87,  865,   89, 1153,
  375,  672,   66,  930, 1154,  627,  628,  629,   49,   50,
   51,   52,   53,   54,   55,  192,  944,  945,  868,   56,
  853, 1153,  277,  856,   88,   87, 1154,   89,   74,  857,
   49,   50,   51,   52,   53,   54,   55,  601,  957,  600,
 1457,  630,  631,  632,  950, 1076, 1072, 1073, 1074, 1075,
 1455,  946,  152, 1344,   46,  382,  383,  384,  385,  111,
  177,   80,   79,  852,   74,   88,   87,  993,   89,  859,
  348,  773,   88,   87, 1021,   89, 1022, 1019,   74, 1453,
  362,  963,  956,  960,  966, 1018, 1451,  932,   46,  933,
  934,  935,  936,  937,  216,  823,   74, 1032, 1434,  593,
 1035,  637,  276, 1343,  968,  823,  606,  766,  997,  696,
  696,  496, 1026, 1044, 1020, 1425,   74,  441, 1007, 1016,
 1424, 1422, 1407,  433, 1027,  962, 1049,  829, 1024, 1047,
  432, 1029, 1028,  428,  517,  429, 1051, 1042,  436, 1006,
 1014,  528,   74, 1405,   80,   79,  480,  840, 1045, 1046,
 1395,  145,  973,  519, 1411,  670,  765,  435, 1005, 1015,
  442, 1008, 1017,  529,  823, 1062,  481,  482,  434, 1057,
   88,   87,  337,   89, 1393,   49,   50,   51,   52,   53,
   54,   55,  592,  277,  636,  277, 1391,  326,  323,   56,
  152, 1389, 1067, 1387, 1385,  277, 1383,   49,   50,   51,
   52,   53,   54,   55, 1381, 1379, 1376, 1373,  962, 1371,
 1367,   41,   43, 1351, 1327, 1209, 1208, 1056,  996, 1055,
 1134,   88,   87, 1315,   89,  762, 1079, 1054, 1080,  155,
  776,   63,  722,   46, 1053,  543, 1034, 1033, 1144,  828,
 1150, 1252,  616,  504,  820,  513,  737, 1131,  508,  509,
  618, 1136,  617, 1141,  578,  522,  527,  177,  565, 1065,
 1251,  308,  455, 1313,  109,   63, 1137, 1197,   92, 1145,
 1198, 1195, 1196,  964, 1316,  770, 1037,  520, 1311,  513,
  521, 1349,  508,  509, 1309, 1187, 1143,  695,  695,  992,
 1194, 1193,  145, 1207, 1190,  953, 1210, 1185,    1, 1418,
 1189, 1199, 1200, 1201, 1202, 1179, 1177, 1175, 1066,  589,
 1234, 1203, 1204, 1205, 1314,   49,   50,   51,   52,   53,
   54,   55,  712,  348,   88,   87, 1217,   89,  626, 1312,
  590, 1211, 1245, 1063, 1152, 1310, 1188, 1247,  152, 1218,
 1239, 1173, 1171, 1169,  145, 1238, 1237, 1240, 1186,   49,
   50,   51,   52,   53,   54,   55, 1180, 1178, 1176,   88,
   87,  348,   89,   74, 1167, 1165,  205,  155,  525,  352,
 1250,  711,  708,  353,  156,  157,  158, 1163,  192,  192,
  192,  192, 1135,  634,  277, 1161,  277, 1127,  192,  192,
  192,  357, 1174, 1172, 1170,  177,  591,  412,  378, 1433,
  626, 1263,  192,   46, 1159,  187,  794,   97,   88,   87,
   63,   89, 1157, 1430,  949, 1168, 1166, 1508, 1138, 1139,
  524, 1155,  351,  526,  317, 1266,  527, 1280, 1164, 1284,
  315, 1286, 1288, 1289, 1270, 1292, 1162, 1294, 1295, 1296,
 1297, 1298, 1299, 1300, 1274, 1302, 1303, 1304, 1305, 1306,
 1307, 1308, 1269, 1429,  313, 1160, 1317, 1318, 1291, 1320,
 1293, 1428, 1319, 1158, 1287, 1285, 1290,  152, 1301,  311,
 1419, 1236, 1156,  309, 1282,  308, 1060, 1322, 1212,  306,
 1213,  308, 1059,  844, 1328,  746,  667, 1233, 1333,  352,
 1332,   45,   94,  353,   49,   50,   51,   52,   53,   54,
   55,  454,  328,  329,  330,  308,  415,   88,   87,  277,
   89,  357,  156,  157,  158,  155,  591, 1558,  823, 1345,
  308, 1338, 1347, 1348,  308,  352, 1331,  332, 1330,  353,
  308,   56,  277,  152, 1272, 1353, 1357, 1147,  525,  277,
  140, 1215,  351,  177,  952, 1360, 1283,  357,  948, 1023,
 1359,  277,  827, 1281,  277,  138, 1350,  118,  119,  120,
  121,  122,  123,  124,  125,  126,  127,  128,  129,  130,
  131,  132, 1470,  839,  591, 1469,  838, 1361,  351,  817,
   63, 1397, 1398, 1399, 1400, 1401, 1402, 1403,  591, 1346,
  524,  771,  764,  526, 1364,  258,  721,  796,  567,  117,
 1409, 1410,  349, 1414, 1396, 1413,  352, 1571, 1415,  591,
  772, 1043,  591,  591,   56, 1421, 1420,  931, 1583,  591,
 1426,  331,  303,  333,  334,  335,  336, 1574,  357, 1152,
 1572, 1565, 1541,  823, 1504, 1503,   88,   87, 1502,   89,
 1412, 1472, 1467,  134,  155, 1464, 1341,   96, 1423, 1461,
  104,  103,  102,  101, 1460,   99,  100,  105, 1456,  351,
  156,  157,  158, 1454,   49,   50,   51,   52,   53,   54,
   55, 1452,  177, 1450, 1437, 1509, 1431, 1427,  258, 1581,
  697, 1406, 1510, 1404, 1394, 1462, 1392, 1463, 1390, 1388,
  354,  355,  356,   97,  352, 1386,  836,   56,  353, 1473,
 1474, 1475,   88,   87, 1466,   89, 1471, 1384,  531, 1382,
  155,   88,   87, 1380,   89, 1378,  357, 1377, 1375, 1374,
 1488,  350, 1152, 1372, 1370, 1486,   56, 1369, 1366, 1489,
 1494, 1487,   88, 1365, 1566,   89, 1342, 1340,  177, 1476,
 1326, 1325, 1499, 1321, 1271,   46, 1498,  351, 1363, 1268,
 1235, 1516,   56, 1126, 1523, 1525, 1527, 1064, 1523, 1525,
 1527,  258, 1050,  206, 1534, 1525, 1048, 1041, 1040, 1532,
 1538, 1501, 1539, 1535, 1540, 1533, 1519, 1030,  969,  959,
  958,  947,  866, 1515, 1518, 1513,  849,  848,  846,  156,
  157,  158,  449,  843,  193, 1511,  837,  194,  835,  816,
  823,  795,  778,  742, 1523, 1525, 1527,  741,  740,  739,
  354,  355,  356,  738,  736,   88,  735,  688,   89,  638,
  198,  177,  570,  425,  424,  199,  344,  200,   46,  320,
 1564, 1497, 1493,  201, 1492, 1491, 1490, 1570, 1465, 1459,
 1458, 1568, 1449, 1448, 1447, 1446,  354,  355,  356, 1577,
  195, 1575, 1445, 1580, 1579,  156,  157,  158, 1582, 1444,
 1567, 1443, 1442, 1441, 1440,  196, 1439,  245,  246,  247,
  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,
 1438, 1436,  823, 1315,   59,  523, 1313, 1576,  208,  259,
  210,  228,  212,  213, 1311, 1309, 1339,   56,   88,  882,
 1187,   89,   41,   43,   56, 1185,  876, 1179,  877,  878,
  879,   46, 1177, 1175, 1173, 1171,  515, 1169, 1167,   61,
   62,   47,   63, 1165, 1163, 1161, 1324,  354,  355,  356,
  223, 1323, 1265,   96, 1264,   56,  104,  103,  102,  101,
   46,   99,  100,  105,  222, 1078,  871,  872,  873, 1068,
  245,  246,  247,  248,  249,  250,  251,  252,  253,  254,
  255,  256,  257,  998, 1061, 1052,   46,   59,  995,  994,
  426,  208,  259,  210,  228,  212,  213,  961,  851,  226,
  224, 1058,  850,  847,  845,   41,   43,  732,  731,  717,
  691,  687,  870,  874,  875,  686,  880,  665,  633,  881,
  603,  530,   61,   62,   47,   63,   49,   50,   51,   52,
   53,   54,   55,  223,  602,  354,  355,  356,  594,  568,
  548,  547,  497,  419,  411,  386,  319,  222,  304,  518,
  302,  510,  507,  245,  246,  247,  248,  249,  250,  251,
  252,  253,  254,  255,  256,  257,  503,   36,  184,   93,
   59,   33,  469,  467,  208,  259,  210,  228,  212,  213,
  466,  465,  226,  224,   95,  464,  244,  463,   41,   43,
  227,  243,  215,  209, 1098,   38,   30,   58,   32,   59,
  207,  211,  887,   31, 1010,   61,   62,   47,   63,   49,
   50,   51,   52,   53,   54,   55,  223,   41,   43, 1000,
  439,   38,   30,   58,   32,   59,  869,  799,  431,  798,
  222,   46,  430,  427,   61,   62,   47,   63,   46,  540,
  270,   60,   35,   41,   43,   83,   29,   21,   57,   34,
   37,   25,   16,  263,   15,  189,   14,   39,   40,  261,
   61,   62,   47,   63,   13,  226,  224,   60,   35,   46,
  260,   12,   11,   21,    9,    8,   37,    4,    2,  444,
  234,  242,  241,   39,   40,  240,  444,  239,  238,  237,
  236,  235,   49,   50,   51,   52,   53,   54,   55,  233,
  232,  231,  230,  229,  114,   77,   42,  756,  658,  657,
 1500,  299,   19,   20,   90,   22,   23,   48,  183,   27,
   28,   49,   50,   51,   52,   53,   54,   55, 1151,  761,
  789, 1273,  965, 1149, 1148,  605, 1479, 1478,   19,   20,
 1477,   22,   23,   48, 1495,   27,   28,   49,   50,   51,
   52,   53,   54,   55,  882, 1481, 1480, 1216, 1132,  598,
  661,  876,  781,  877,  878,  879,  448,   91,   58,   32,
   59, 1081,  743,  448,   65,   58,   32,   59,   64,  197,
  445,  883,    0,    0,    0,  446,    0,  445,   41,   43,
  929,    0,  446,    0,    0,   41,   43,    0,    0,    0,
    0,  871,  872,  873,    0,   61,   62,   47,   63, 1109,
  437,  438,   61,   62,   47,   63,    0,  437,  438,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 1085, 1086,
  447, 1093, 1107, 1087, 1088, 1089, 1090,  447, 1091, 1092,
    0, 1108, 1094, 1095, 1096, 1097,   63,  870,  874,  875,
    0,  880,    0,    0,  881,    0,  532,    0,    0,  533,
    0,    0,    0,    0,    0,  443,  440,    0,    0,    0,
    0,    0,  443,  440,    0,    0,    0,    0,    0,  882,
    0,    0,    0,    0,  193,    0,  876,  194,  877,  878,
  879,    0,   49,   50,   51,   52,   53,   54,   55,   49,
   50,   51,   52,   53,   54,   55,    0,    0,    0,    0,
  198,  177,    0,    0,    0,  199,    0,  200,    0,    0,
    0,    0,    0,  201,  901,    0,  871,  872,  873,    0,
   49,   50,   51,   52,   53,   54,   55,  146,  928,    0,
  195,    0,    0,  893,  894,    0,  902,  919,  895,  896,
  897,  898,    0,  899,  900,  196,  920,  903,  904,  905,
  906,    0,    0,    0,    0,  348,    0,    0,    0,    0,
    0,    0,  870,  874,  875,    0,  880,    0,    0,  881,
 1232, 1231, 1226,    0, 1225, 1224, 1223, 1222,    0, 1220,
 1221,  105,    0, 1230, 1229, 1228, 1227,    0,    0,    0,
    0,  917, 1219,  921,    0,  990,  989,  988,  923,  983,
  982,  981,  980,    0,  978,  979,  105,    0,  987,  986,
  985,  984,    0,    0,  925,  977,  975,    0, 1542,    0,
    0,    0,    0,    0,    0, 1083, 1084,    0, 1099, 1100,
 1101,    0, 1102, 1103,    0,    0, 1104, 1105,    0, 1106,
    0,    0,    0,    0,    0,    0,    0,  926,    0,    0,
    0,    0, 1082, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
 1117, 1118, 1119, 1120, 1121, 1122,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  901,
    0,    0,  976,    0,    0, 1512,    0,    0,    0,    0,
    0,    0,    0,  928,    0,    0,    0,    0,  893,  894,
    0,  902,  919,  895,  896,  897,  898,    0,  899,  900,
    0,  920,  903,  904,  905,  906,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  146,    0,    0,    0,    0,  888,    0,  889,
  890,  891,  892,  907,  908,  909,  924,  910,  911,  912,
  913,  914,  915,  916,  918,  922,  917,    0,  921,  927,
    0,    0,    0,  923,    0,  175,    0,    0,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,  925,
  168,  169,    0,    0,  171,  172,  173,  174,  564, 1557,
  152,  142,  162,    0,    0,    0,    0,    0,    0,    0,
  141,  147,    0, 1547,    0,    0,    0,    0,    0,    0,
    0,    0,  926,    0,    0,    0,  143,  144,  149, 1543,
  556,    0,  550,  551,  552,  553,    0,    0, 1552,    0,
    0,  146,    0,    0,    0,    0,  352,    0,    0,    0,
  772,    0, 1553, 1554, 1555, 1556,    0,    0,    0,    0,
    0,  160,    0,    0,    0,    0,    0,    0,  357,  558,
  559,  560,  561,    0,    0,  555,    0,    0,    0,  562,
  563,  554,    0,    0, 1544, 1545, 1546, 1548, 1549, 1550,
 1551,    0,    0,    0,    0,    0,    0,    0,    0,  623,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  888,    0,  889,  890,  891,  892,  907,  908,
  909,  924,  910,  911,  912,  913,  914,  915,  916,  918,
  922,  990,  989,  988,  927,  983,  982,  981,  980,    0,
  978,  979,  105,    0,  987,  986,  985,  984,    0,    0,
    0,  977,  975,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   88,
   87,    0,   89,    0,    0,    0,    0,  155,    0,    0,
  175,    0,    0,  557,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,  146,    0,  177,  142,  162,  352,    0,
    0,    0,  353,    0,    0,  141,  147,    0,  976,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  357,  143,  144,  149,    0,    0,  175,    0,    0,    0,
    0,    0,  163,  161,  170,    0,  164,  165,  166,  167,
    0,  168,  169,    0,    0,  171,  172,  173,  174,    0,
    0,  623, 1276,  162,    0,    0,  160,  159,   88,   87,
    0,   89,    0,    0,    0,    0,  155,    0,    0,  175,
    0,    0,    0,  151,  148,  163,  161,  170,    0,  164,
  165,  166,  167,    0,  168,  169,    0,    0,  171,  172,
  173,  174,    0,    0,  177,  142,  162,    0,    0,    0,
 1277,    0,    0,    0,  141,  147,    0,    0,    0,    0,
  297,  198,  156,  157,  158,    0,  199,    0,  200, 1275,
  143,  144,  149,    0,  201,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  146,    0,    0,    0,    0,  352,
    0,  195,  284,  353,  279,  280,  281,  282,  283,   63,
    0,    0,    0,  287,    0,  160,  196,  354,  355,  356,
    0,  357,  285,    0,    0,    0,    0,  295,    0,  286,
    0,  641,  642,    0,    0,    0,    0,    0,    0,    0,
    0,  288,  289,  290,  291,  292,  293,  294,  298,    0,
    0,    0,  623,    0,  296,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  156,  157,  158,    0,    0,    0,    0,    0,    0,
   88,   87,    0,   89,    0,    0,    0,    0,  155,  146,
    0,  175,    0,    0,    0,  151,  148,  163,  161,  170,
    0,  164,  165,  166,  167,    0,  168,  169,    0,    0,
  171,  172,  173,  174,    0,    0,  177,  142,  162,    0,
    0,    0,    0,    0,    0,    0,  141,  147,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  143,  144,  149,    0,    0,  274,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  146,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  160,    0,  354,
  355,  356,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  641,  642,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  274,    0,    0,    0,    0,
    0,   88,   87,    0,   89,    0,    0,    0,    0,  155,
    0,    0,  175,  156,  157,  158,  151,  148,  163,  161,
  170,    0,  164,  165,  166,  167,    0,  168,  169,    0,
    0,  171,  172,  173,  174,    0,  146,  177,  142,  162,
    0,    0,    0,    0,    0,    0,    0,  141,  147,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  143,  144,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  274,    0,   88,   87,  160,   89,
  354,  355,  356,    0,  155,  146,    0,  175,    0,    0,
    0,  151,  148,  163,  161,  170,    0,  164,  165,  166,
  167,    0,  168,  169,    0,    0,  171,  172,  173,  174,
    0,    0,  177,  142,  162,    0,    0,    0,    0,    0,
    0,    0,  141,  147,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  156,  157,  158,    0,  143,  144,
  149,    0,  811,  274,   88,   87,    0,   89,    0,    0,
    0,    0,  155,    0,    0,  175,    0,  146,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,  160,  171,  172,  173,  174,    0,    0,
  177,  142,  162,    0,    0,    0,    0,  810,    0,    0,
  141,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
    0,    0,    0,    0,    0,  274,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  146,    0,    0,  156,
  157,  158,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  160,  159,   88,   87,    0,   89,    0,    0,    0,
    0,  155,    0,    0,  175,    0,    0,    0,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,    0,    0,  171,  172,  173,  174,    0,    0,  177,
  142,  162,    0,    0,  274,    0,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,  156,  157,  158,
    0,    0,    0,    0,    0,  143,  144,  149,    0,    0,
    0,    0,   88,   87,    0,   89,    0,    0,    0,    0,
  155,    0,    0,  175,    0,    0,    0,  151,  148,  163,
  161,  170,    0,  164,  165,  166,  167,    0,  168,  169,
  160,    0,  171,  172,  173,  174,    0,    0,  177,  142,
  162,    0,    0,    0,    0,    0,    0,    0,  763,  147,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  146,    0,  143,  144,  149,    0,    0,    0,
    0,    0,    0,    0,   88,   87,    0,   89,    0,    0,
    0,    0,  155,    0,    0,  175,  156,  157,  158,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,  160,
  168,  169,    0,    0,  171,  172,  173,  174,    0,    0,
  177,  142,  162,    0,    0,    0,    0,  146,    0,    0,
  141,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
    0,    0,    0,   88,   87,    0,   89,    0,    0,    0,
    0,  155,    0,    0,  175,  156,  157,  158,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,  653,  146,  171,  172,  173,  174,    0,    0,  177,
  142,  162,   88,   87,    0,   89,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,    0,    0,
    0,    0,    0,    0,    0,    0,  409,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  156,  157,  158,
  996,    0,    0,  146,    0,    0,    0,    0,    0,    0,
  458,    0,    0,    0,  391,    0,    0,    0,  407,    0,
    0,  389,  390,    0,    0,    0,  393,  394,  405,  395,
  396,  397,  398,  399,  400,  401,  402,  392,    0,    0,
    0,    0,    0,    0,  406,    0,    0,  404,    0,    0,
    0,    0,    0,    0,  403,    0,    0,  146,    0,    0,
    0,  726,    0,  408,    0,    0,  156,  157,  158,  489,
  175,  490,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,  177,  142,  162,    0,    0,
    0,    0,    0,    0,    0,  141,  147,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  143,  144,  149,  380,  175,  381,    0,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,    0,  171,  172,  173,  174,    0,    0,
    0,  142,  162,    0,    0,    0,  160,    0,    0,    0,
  141,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,    0,  142,  162,    0,    0,
    0,  160,    0,    0,    0,  141,  147,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  143,  144,  149,    0,    0,    0,    0,    0,    0,
    0,  175,    0,    0,    0,  151,  148,  163,  161,  170,
    0,  164,  165,  166,  167,    0,  168,  169,    0,    0,
  171,  172,  173,  174,    0,    0,  160,  142,  162,    0,
    0,    0,    0,    0,    0,    0,  141,  147,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  143,  144,  149,  175,    0,    0,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,    0,  171,  172,  173,  174,    0,    0,
    0,  142,  162,    0,    0,    0,    0,  160,    0,    0,
  141,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  160
};

YYSTATIC YYCONST short YYFARDATA YYPACT[] = {
-1000, 1423,-1000,  609,  586,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  581,  555,  539,  514,-1000,-1000,-1000,  102,
  102, -466,  124,  124,-1000,-1000,-1000,  478,-1000, -115,
  535,-1000,  907, 1099,   68,  903,  102, -355, -356,-1000,
 -139,  855,   68,  855,-1000,-1000,-1000,  172, 2319,  535,
  535,  535,  535,-1000,-1000,  187,-1000,-1000,-1000, -164,
 1074,-1000,-1000, 1825,   68,   68,-1000,-1000, 1368,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,  102, -121,-1000,-1000,
-1000,-1000,  691, -120, 2983, 1193,-1000,-1000,-1000,-1000,
 2436,-1000,  102,-1000, 1385,-1000, 1310, 1718,   68, 1169,
 1163, 1159, 1144, 1120, 1114, 1716, 1518,   83,-1000,  102,
  655,  878,-1000,-1000,   86, 1193,  535, 2983,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000, 1515,  185, 1288, 1061, -229, -230, -231,
 -238,  691,-1000, -101,  691, 1255,  312,-1000,-1000,   48,
-1000, 3564,  239, 1081,-1000,-1000,-1000,-1000,-1000, 3394,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  504,-1000,-1000,-1000,-1000,-1000, 1193, 1715,  538, 1193,
 1193, 1193,-1000, 3232,  123,-1000,-1000, 1714, 1066, 2884,
-1000, 3564,-1000,-1000,-1000,   65,   65,-1000, 1713,-1000,
-1000,   99, 1513, 1512, 1575, 1397,-1000,-1000,  102,-1000,
  102,   87,-1000,-1000,-1000,-1000, 1173,-1000,-1000,-1000,
-1000,-1000,  901,  102, 3193,-1000,   21,  -69,-1000,-1000,
  201,  102,  124,  610,   68,  201, 1255, 3339, 2983,  -88,
   65, 2884, 1712,-1000,  215,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  511,  545,  860, 1606,-1000,  100,-1000,  355,  691,-1000,
-1000, 2983,-1000,-1000,  164, 1217,   65,  535,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1711, 1710, 2114,
  895,  349, 1284, 1709,  123, 1511,  -48,-1000,  102,  -48,
-1000,  124,-1000,  102,-1000,  102,-1000,  102,-1000,-1000,
-1000,-1000,  891,-1000,  102,  102,-1000, 1193,-1000,-1000,
-1000, -369,-1000,-1000,-1000,-1000,-1000,  878,  -47,  116,
-1000,-1000, 1193,  999,-1000, 1299,  789, 1708,-1000,  170,
  535,  157,-1000,-1000,-1000, 1704, 1690, 3564,  535,  535,
  535,  535,-1000,  691,-1000,-1000, 3564,  228,-1000, 1193,
-1000,  -68,-1000, 1217,  879,  889,  887,  535,  535, 2721,
-1000,-1000,-1000,-1000,-1000,-1000,  102, 1299, 1070,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,  406,-1000,-1000,-1000, 1688,
 1052,-1000,  791, 1508,-1000,-1000, 2580,-1000,-1000,  102,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,  458,
  446,  417,-1000,-1000,-1000,-1000,-1000,  102,  102,  402,
 3124,-1000,-1000, -304, -196,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  -53, 1687,-1000,  102, 1158,   39,   65,  794,
  640,  102,-1000,  -69,  107,  107,  107,  107, 2983,  215,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, 1685, 1681, 1506,-1000,-1000,-1000, 2721,-1000,-1000,
-1000,-1000, 1299, 1680,   68, 3564,-1000,  201, 1285,-1000,
 -119, -124,-1000,-1000, -351,-1000,-1000,   68,  411,  454,
   68,-1000,-1000, 1041,-1000,-1000,   68,-1000,   68,-1000,
 1040,  991,-1000,-1000,  535, -157, -360, 1679,-1000,-1000,
-1000,-1000,  535, -361,-1000,-1000, -346,-1000,-1000,-1000,
 1282,-1000,  869,  535, 3564, 1193, 3510,  102,  108, 1181,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1678,-1000,-1000,
-1000,-1000,-1000,-1000, 1677,-1000,-1000, 1385,  108, 1505,
-1000, 1503,  883, 1502, 1498, 1497, 1496, 1492,-1000,  362,
 1157,-1000,   97, 1193,-1000,-1000,-1000,  298,  535,  108,
  388,  175, 3052,-1000,-1000, 1278, 1193,-1000,  793,-1000,
-1000,  -50, 2983, 2983,  943, 1277, 1217, 1193, 1193, 1193,
 1193,-1000, 2418,-1000, 1193,-1000,  535,  535,  535,  867,
 1193,   33, 1193,  494, 1491,-1000,  128,-1000,-1000,-1000,
-1000,-1000,-1000,  102,-1000, 1299,-1000,-1000, 1255,   30,
 1076,-1000,-1000, 1193, 1490, 1202,-1000,-1000,-1000,-1000,
-1000,-1000,  -10,   65,  465,  459, 2983, 2816, -106,  -47,
 1488, 1265,-1000,-1000, 3510,  -53,  881,  102,  -96, 3564,
  102, 1193,  102, 1238,  876,-1000,-1000,-1000,  201,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,  102,  124,-1000,  -18,
 1193,  108, 1487, 1386, 1485, 1262, 1259,-1000,  123,  102,
  102, 1482, 1155,-1000,-1000, 1299, 1674, 1477, 1673, 1476,
 1475, 1672, 1668, 1193,  535,-1000,  535,  102,  141,  535,
   68, 2983,  535,  706, 1298,   81, -182, 1471,   95, 1795,
  131, 1877,  102,-1000, 1306,-1000,  900,-1000,  900,  900,
  900,  900,  900, -166,-1000,  102,  102,  535,-1000,-1000,
-1000,-1000,-1000,-1000, 1193, 1470, 1234, 1083,-1000,-1000,
  347, 1230,  964,  271,  166,-1000,   46,  102, 1469, 1468,
-1000, 3564, 1667, 1081, 1081, 1081,  535,  535,-1000,  941,
  542,  128,-1000,-1000,-1000,-1000,-1000, 1467,  343,  226,
  958,  -96, 1659, 1658, 3449,-1000,-1000, 1568,  104,  204,
  690,  -96, 3564,  102, 1193,  102, 1235, -322,  535, 1193,
-1000,-1000, 3564,-1000,-1000, 1193,-1000,  -53,   81, 1466,
 -241,-1000,-1000, 1193, 2721,  874,  873, 2983,  945, -126,
 -137, 1457, 1456,  535, 1300,-1000,  -53,-1000,  201,  201,
-1000,-1000,-1000,-1000,  411,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 1081, 1193, 1455,  102, 1193, 1451,-1000,  535,
  -96, 1655,  871,  864,  856,  854,-1000,  108, 1670,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
 1154, 1148, 1654,  945,  123, 1446,  947,   68, 1639, -405,
  -56,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  495,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 1635, 1635,-1000, 1635, 1762,-1000,
-1000, -408,-1000, -387,-1000,-1000, -429,-1000,-1000,-1000,
 1442,-1000,-1000,-1000,-1000,-1000,-1000,-1000,  123,-1000,
-1000,-1000,-1000,-1000,  165,  331, 1193,-1000,  108,  829,
  338,-1000, 3052,  374,  955,-1000,-1000,-1000,-1000,-1000,
 1217,  -53, 1081, 1193,-1000,  535, 1223, 2983,-1000,-1000,
-1000,  393,-1000,-1000,-1000, 1111, 1102, 1094, 1075, 1067,
 1055, 1054, 1033, 1032, 1031,  997,  996,  995,  399,  987,
  975,   68,  455, 1076,  -53,  -53,  102,  938,-1000,-1000,
-1000, 1255, 1255, 1255, 1255,-1000,-1000,-1000,-1000,-1000,
-1000, 1255, 1255, 1255,-1000,-1000,-1000,-1000,-1000, -441,
 2721,  853,  852, 2983,-1000, 1255, 1193, 1181,-1000,  123,
-1000,  123,  -23,-1000, 1227,-1000,-1000, 1913,  123,  102,
-1000,-1000, 1193,-1000, 1439,-1000,-1000, 1143,-1000,-1000,
 -287,  998, 1877,-1000,-1000,-1000,-1000, 1299,-1000, -236,
 -257,  102,-1000,-1000,-1000,-1000,  383,  192,  108,  899,
  880,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -434,-1000,
-1000,   35,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,  336,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  102,-1000,-1000,-1000,-1000, 1624, 1299, 1622,-1000,-1000,
-1000,-1000,-1000,  359, 1438, 1223,-1000,  128, 1433, 1220,
-1000, 2375,-1000,-1000,-1000,  -37,  102,  977,  102, 1938,
  102,  110,  102,   93,  102,  124,  102,  102,  102,  102,
  102,  102,  102,  124,  102,  102,  102,  102,  102,  102,
  102,  974,  968,  953,  913,  102,  102, -112,  102, 1432,
 1299,-1000,-1000, 1621, 1616, 1430, 1429,  851,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,   65,  -25,-1000, 1214,
-1000, 1216,-1000,-1000,  -96, 2983,-1000,-1000, 1299,-1000,
 1615, 1614, 1613, 1608, 1607, 1605,   18, 1604, 1603, 1602,
 1597, 1595, 1590,-1000,-1000,-1000,  411,-1000, 1586, 1426,
 1335,-1000,-1000,-1000,-1000, 1425,-1000,  740,  102,-1000,
 1275,  102,  102,  950,  108,  850,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,  155,  102,    5,  371,-1000,-1000,-1000,
-1000,-1000, 2983,  395,-1000,-1000,-1000, 1172, 1422, 1417,
  847,  144, 1416, 1413,  846, 1412,  844, 1408, 1407,  843,
 1406, 1404,  842, 1402,  841, 1398,  833, 1396,  831, 1384,
  830, 1378,  828, 1377,  823, 1375,  811, 1373,  787,  124,
  102,  102,  102,  102,  102,  102,  102, 1372,  780, 1370,
  759,-1000,  332,  -53,  -53,-1000,-1000,  822, 3564,  -96,
 2983,  -53,  969,-1000, 1585, 1584, 1576, 1573, 1142,  -53,
-1000,-1000,-1000,-1000,  102,  758,  108,  757,  752,  102,
 1299,-1000,-1000, 1366, 1133, 1125, 1085, 1365,-1000,   73,
-1000, 1068,  735,  101,-1000,-1000,-1000, 1571, 1363,-1000,
-1000, 1570,-1000, 1556,-1000,-1000, 1554,-1000,-1000, 1553,
-1000, 1552,-1000, 1551,-1000, 1549,-1000, 1542,-1000, 1535,
-1000, 1534,-1000, 1533,-1000, 1532, 1362,  723, 1360,  716,
 1352,  687, 1347,  677,-1000, 1530,-1000, 1529,-1000, 1343,
 1338,-1000, 2721,  969,-1000, 1334, 1528,-1000,  857,  411,
 1331,  429,-1000, 1261,-1000, 2042, 1330,-1000,  102,  102,
  102,-1000,-1000, 1938,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, 1526,-1000, 1525,-1000, 1524,-1000, 1522,-1000,-1000,
-1000,-1000,  -39, 1521,  945,  -53,-1000,-1000,-1000,  108,
-1000,  947,-1000, 1327, 1324, 1323,-1000,  182, 1106, 2264,
  428,  278,  527,  608,  582,  562,  443,  544,  530,  426,
-1000,-1000,-1000,-1000,  405,  135,  -96,  -53,-1000, 1321,
 2115, 1203,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
   88,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  328,  381,  357,  350,-1000,-1000,-1000, 1520,
 1320,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1424,  108,-1000,
-1000,-1000,-1000,-1000,  -53, -443,  102, 1296, 1319, -188,
 1316,-1000,-1000,   65,-1000, 3564, 2721,  -46,  -96,  969,
 1369,  -53, 1307,-1000
};

YYSTATIC YYCONST short YYFARDATA YYPGO[] = {
    0,   33,  178,    5, 1991,   78,   39,    7, 1989,    0,
 1988, 1984, 1982,  268,   80, 1981, 1977,    4, 1972,   52,
   40,    3,   26,   32,   24,    6, 1970,   44,   41,   45,
 1969,   38,   34,   10,   17,   11,   31, 1968,   42, 1967,
   35,   18, 1966, 1965,    9,    1,   13,    8, 1954, 1950,
 1947, 1946,   22,   27,   43, 1945, 1944, 1943, 1942,   15,
 1941, 1940,   12, 1939,   30, 1938,   14,   36,   16,   23,
   46,    2,  599,   59, 1236,   29,  106, 1928, 1924, 1921,
 1920, 1919, 1918,   19,   28, 1917, 1329, 1916, 1915,   25,
  789,  131, 1914,   50, 1221, 1913, 1912, 1911, 1910, 1909,
 1901, 1900, 1899, 1898, 1897, 1895, 1892, 1891, 1890, 1028,
 1888,   67,   56, 1887,   65,  134,   62,   55, 1885, 1884,
   89, 1882, 1881, 1880, 1874, 1869, 1866,   53, 1864, 1863,
 1862,  100,   70,   49, 1861,   92,  292, 1859, 1858, 1856,
 1855, 1850, 1849, 1843, 1842, 1839, 1838, 1837, 1830,  832,
 1829, 1814, 1813, 1812, 1811, 1810, 1803, 1802,   75, 1801,
 1800,  125, 1797, 1796, 1795,  130, 1791, 1790, 1783, 1782,
 1781, 1779, 1778,   58, 1760,   63, 1777,   54, 1776,  602,
 1762, 1761, 1759, 1646, 1615, 1438
};
YYSTATIC YYCONST yyr_t YYFARDATA YYR1[]={

   0, 109, 109, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 136,
 136,  36,  36, 133, 133, 133,   2,   2,   1,   1,
   1,   9,  24,  24,  23,  23,  23, 134, 134, 134,
 134, 134, 135, 135, 135, 135, 135, 135, 135, 135,
 135,  93,  93,  93,  93,  94,  94,  94,  94,  10,
  11,  73,  72,  72,  59,  61,  61,  61,  62,  62,
  62,  65,  65, 132, 132, 132,  60,  60,  60,  60,
  60,  60, 130, 130, 130, 119,  12,  12,  12,  12,
  12,  12, 118, 137, 113, 138, 139, 111,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77, 140, 140, 141, 141, 112,
 112, 142, 142,  56,  56,  57,  57,  69,  69,  18,
  18,  18,  18,  18,  19,  19,  68,  68,  67,  67,
  58,  21,  21,  22, 143, 143, 143, 143, 143, 143,
 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
 143, 143, 143, 143, 143, 116,  79,  79,  79,  79,
  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
  79,  79,   4,   4,  35,  35,  16,  16,  75,  75,
  75,  75,  75,  75,  75,   7,   7,   7,   7,   8,
   8,   8,   8,   8,   8,   8,  76,  74,  74,  74,
  74,  74,  74, 144, 144,  81,  81,  81, 145, 145,
 150, 150, 150, 150, 150, 150, 150, 150, 146,  82,
  82,  82, 147, 147, 151, 151, 151, 151, 151, 151,
 151, 152,  38,  38,  34,  34, 153, 114,  78,  78,
  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  78,  83,  83,  83,  83,  83,  83,  83,  83,  83,
  83,  83,  83,  83,  83,  83,  83,   3,   3,   3,
  13,  13,  13,  13,  13,  80,  80,  80,  80,  80,
  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
  80, 154, 115, 115, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 158, 159, 156, 161, 161, 160, 160, 160, 163, 162,
 162, 162, 162, 166, 166, 166, 169, 164, 167, 168,
 165, 165, 165, 117, 170, 170, 172, 172, 172, 171,
 171, 173, 173,  14,  14, 174, 174, 174, 174, 174,
 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
  41,  41,  41,  41,  41,  41,  41,  41,  41, 175,
  31,  31,  32,  32,  39,  39,  39,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  42,  42,  42,  43,  43,  43,  47,
  47,  46,  46,  45,  45,  44,  44,  48,  48,  49,
  49,  49,  50,  50,  50,  50,  51,  51, 149,  95,
  96,  97,  98,  99, 100, 101, 102, 103, 104, 105,
 106, 107, 108, 157, 157, 157, 157, 157, 157, 157,
 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 157, 157, 157, 157, 157, 157,   6,   6,   6,   6,
   6,  53,  53,  54,  54,  55,  55,  25,  25,  26,
  26,  27,  27,  27,  70,  70,  70,  70,  70,  70,
  70,  70,  70,  70,   5,   5,  71,  71,  71,  71,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  20,  20,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  28,  28,  28,  28,
  28,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  28,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,
  52,  52,  52,  52,  52,  52,  52,  52,  30,  30,
  29,  29,  29,  29,  29, 131, 131, 131, 131, 131,
 131,  64,  64,  64,  63,  63,  87,  87,  84,  84,
  85,  17,  17,  37,  37,  37,  37,  37,  37,  37,
  37,  86,  86,  86,  86,  86,  86,  86,  86,  86,
  86,  86,  86,  86,  86,  86, 176, 176, 120, 120,
 120, 120, 120, 120, 120, 120, 120, 120, 120, 121,
 121,  88,  88,  89,  89, 177, 122,  90,  90,  90,
  90,  90,  90,  90,  90,  90,  90, 123, 123, 178,
 178, 178,  66,  66, 179, 179, 179, 179, 179, 179,
 180, 182, 181, 124, 124, 125, 125, 183, 183, 183,
 183, 126, 148,  91,  91,  91,  91,  91,  91,  91,
  91,  91,  91, 127, 127, 184, 184, 184, 184, 184,
 184, 184, 128, 128,  92,  92,  92, 129, 129, 185,
 185, 185, 185 };
YYSTATIC YYCONST yyr_t YYFARDATA YYR2[]={

   0,   0,   2,   4,   4,   3,   1,   1,   1,   1,
   1,   1,   4,   4,   4,   4,   1,   1,   1,   2,
   2,   3,   2,   2,   1,   1,   1,   4,   1,   0,
   2,   1,   3,   2,   4,   6,   1,   1,   1,   1,
   3,   1,   1,   1,   1,   4,   4,   4,   4,   4,
   4,   4,   2,   3,   2,   2,   2,   1,   1,   2,
   1,   2,   4,   6,   3,   5,   7,   9,   3,   4,
   7,   1,   1,   1,   2,   0,   2,   2,   0,   6,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   3,
   2,   3,   1,   2,   3,   7,   0,   2,   2,   2,
   2,   2,   3,   3,   2,   1,   4,   3,   0,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,
   3,   2,   2,   2,   5,   0,   2,   0,   2,   0,
   2,   3,   1,   0,   1,   1,   3,   0,   3,   1,
   1,   1,   1,   1,   0,   2,   4,   3,   0,   2,
   3,   0,   1,   5,   3,   4,   4,   4,   1,   1,
   1,   1,   1,   2,   2,   4,  13,  22,   1,   1,
   5,   3,   7,   5,   4,   7,   0,   2,   2,   2,
   2,   2,   2,   2,   5,   2,   2,   2,   2,   2,
   2,   5,   0,   2,   0,   2,   0,   3,   9,   9,
   7,   7,   1,   1,   1,   2,   2,   1,   4,   0,
   1,   1,   2,   2,   2,   2,   4,   2,   5,   3,
   2,   2,   1,   4,   3,   0,   2,   2,   0,   2,
   2,   2,   2,   2,   1,   1,   1,   1,   9,   0,
   2,   2,   0,   2,   2,   2,   2,   1,   1,   1,
   1,   1,   0,   4,   1,   3,   1,  13,   0,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   5,   8,   6,
   5,   0,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   4,   4,   4,   4,   5,   1,   1,   1,
   0,   4,   4,   4,   4,   0,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   5,   1,   0,   2,   2,   1,   2,   4,   5,   1,
   1,   1,   1,   2,   1,   1,   1,   1,   1,   4,
   6,   4,   4,  11,   1,   5,   3,   7,   5,   5,
   3,   1,   2,   2,   1,   2,   4,   4,   1,   2,
   2,   2,   2,   2,   2,   2,   1,   2,   1,   1,
   1,   4,   4,   2,   4,   2,   0,   1,   1,   3,
   1,   3,   1,   0,   3,   5,   4,   3,   5,   5,
   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,
   4,   4,   4,   4,   4,   4,   4,   4,   5,   5,
   5,   5,   4,   4,   4,   4,   4,   4,   3,   2,
   0,   1,   1,   2,   1,   1,   1,   1,   4,   4,
   5,   4,   4,   4,   7,   7,   7,   7,   7,   7,
   7,   7,   7,   7,   8,   8,   8,   8,   7,   7,
   7,   7,   7,   0,   2,   2,   0,   2,   2,   0,
   2,   0,   2,   0,   2,   0,   2,   0,   2,   0,
   2,   2,   0,   2,   3,   2,   0,   2,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   2,   1,   2,   2,   2,   2,   2,   2,
   3,   2,   2,   2,   5,   3,   2,   2,   2,   2,
   2,   5,   4,   6,   2,   4,   0,   3,   3,   1,
   1,   0,   3,   0,   1,   1,   3,   0,   1,   1,
   3,   1,   3,   4,   4,   4,   4,   5,   1,   1,
   1,   1,   1,   1,   1,   3,   1,   3,   4,   1,
   0,  10,   6,   5,   6,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   2,   2,   2,
   2,   1,   1,   1,   1,   2,   3,   4,   6,   5,
   1,   1,   1,   1,   1,   1,   1,   2,   2,   1,
   2,   2,   4,   1,   2,   1,   2,   1,   2,   1,
   2,   1,   2,   1,   1,   0,   5,   0,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
   2,   2,   2,   1,   1,   1,   1,   1,   3,   2,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   2,   1,   3,   2,
   3,   4,   2,   2,   2,   5,   5,   7,   4,   3,
   2,   3,   2,   1,   1,   2,   3,   2,   1,   2,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
   2,   2,   2,   1,   1,   1,   1,   1,   1,   3,
   0,   1,   1,   3,   2,   6,   7,   3,   3,   3,
   6,   0,   1,   3,   5,   6,   4,   4,   1,   3,
   3,   1,   1,   1,   1,   4,   1,   6,   6,   6,
   4,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   3,   2,
   5,   4,   7,   6,   7,   6,   9,   8,   3,   8,
   4,   0,   2,   0,   1,   3,   3,   0,   2,   2,
   2,   3,   2,   2,   2,   2,   2,   0,   2,   3,
   1,   1,   1,   1,   3,   8,   2,   3,   1,   1,
   3,   3,   3,   4,   6,   0,   2,   3,   1,   3,
   1,   4,   3,   0,   2,   2,   2,   3,   3,   3,
   3,   3,   3,   0,   2,   2,   3,   3,   4,   2,
   1,   1,   3,   5,   0,   2,   2,   0,   2,   4,
   3,   1,   1 };
YYSTATIC YYCONST short YYFARDATA YYCHK[]={

-1000,-109,-110,-111,-113,-114,-116,-117,-118,-119,
-120,-121,-122,-124,-126,-128,-130,-131,-132, 525,
 526, 460, 528, 529,-133,-134,-135, 532, 533,-139,
 409,-152, 411,-170,-137, 455,-176, 463, 408, 470,
 471, 430, -87, 431, -93, -94, 273, 449, 530, 534,
 535, 536, 537, 538, 539, 540,  59,-138, 410, 412,
 454, 447, 448, 450, -10, -11, 123, 123,-115, 123,
 123, 123, 123,  -9, 264,  -9, 527, -88, -24, 265,
 264, -24, 123,-140, 314,  -1,  -2, 261, 260, 263,
 -78, -16,  91,-171, 123,-174, 278,  38,-175, 286,
 287, 284, 283, 282, 281, 288, -31, -32, 267,  91,
  -9, -90, 469, 469, -92,  -1, 469, -86, 432, 433,
 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
 444, 445, 446, -31, -86, 263, -28, -70, -74, -93,
 -94, 306, 297, 322, 323,-149,  33, 307, 276, 324,
 -52, 275,  91,  -5, -76, 268, 413, 414, 415, 358,
 357, 278, 298, 277, 281, 282, 283, 284, 286, 287,
 279, 290, 291, 292, 293, 271,  -1, 296,  -1,  -1,
  -1,  -1, 262, -77,-172, 318, 379,  61, -73,  40,
 -75,  -7, -76, 269, 272, 325, 340,  -8, 295, 300,
 302, 308, -31, -31,-112,-109, 125,-155, 416,-156,
 418,-154, 420, 421,-117,-157,  -2,-131,-120,-133,
-132,-135, 472, 458, 508,-158, 507,-160, 419, -95,
 -96, -97, -98, -99,-108,-100,-101,-102,-103,-104,
-105,-106,-107,-159,-163, 395, 396, 397, 398, 399,
 400, 401, 402, 403, 404, 405, 406, 407, 123, 417,
-123,-125,-127,-129,  -9,  -1, 461,-136, -70, -76,
-141, 315, -71, -70,  91, -28,-149,  46,  -7, 328,
 329, 330, 331, 332, 326, 346, 353, 337, 365, 366,
 367, 368, 369, 370, 371, 351, 378, 294, 372, -79,
  -9,-173,-174,  42,  40, -31,  40, -14,  91,  40,
 -14,  40, -14,  40, -14,  40, -14,  40, -14,  40,
  41, 267,  -9, 263,  58,  44, 262,  -1, 354, 355,
 356, 473, 379, 475, 476, 477, 478, -90, -91,  -1,
 329, 330,  -1, -71,  41, -36,  61, 288, 262,  44,
 390,  91,  38,  42, 359, 360, 361,  60, 390, 390,
 390, 390, -70, 306, -70, -75,  -7,  33,  -9,  -1,
 280, 279, 289, -28,  -1, -76,  42, 471,  47, -28,
 270, 272, 281, 282, 283, 284,  40, -36,  -1, 329,
 330, 322, 345, 334, 335, 337, 338, 339, 340, 341,
 342, 343, 344, 362, 355, 336, 352, 326, 371, 294,
  -2,  40,  61, -72, -71, -74, -28,  -7,  -7,  40,
 301, 303, 304, 305,  41,  41, 125,-143,-114,-111,
-144,-146,-116,-117,-131,-120,-132, 452, 453,-148,
 508,-133,-135, 507, 321, 422, 427, 472, 408, 125,
  -9,  -9,  40, 451,  58,  91,  -9, -71, 357, 364,
 541,  91,-161,-162,-164,-166,-167,-168, 311,-169,
 309, 313, 312,  -9,  -2,  -9, -24,  40, -23, -24,
 266, 286, 287, -31,  -9,  -2, -75, -28, -76, 270,
 272, -71, -36, 341,-175,  -7, -72,  40,-115,-158,
  -2,  -9, 125,-178, 462,-131,-179,-180, 467, 468,
-181,-132,-135, 464, 125,-183,-177,-179,-182, 338,
 462, 465, 125,-184, 460, 408, 463, 296,-132,-135,
 125,-185, 460, 463,-132,-135, -89, 420, 125,-136,
-142, -71,  -1, 471,  -7,  -1, -13,  40,  40, -28,
 328, 329, 330, 331, 377, 371, 326, 479, 365, 366,
 367, 368, 375, 376, 294,  93, 125,  44,  40,  -2,
  41, -23,  -9, -23, -24,  -9,  -9,  -9,  93,  -9,
  -9, 474,  -1,  -1, 330, 329, 327, 336, 390,  40,
  61,  43, 123,  40,  40, 263,  -1,  93, -30, -29,
 275,  -9,  40,  40, -54, -55, -28,  -1,  -1,  -1,
  -1, -70, -28,  -9,  -1, 280,  93,  93,  93,  -1,
  -1, -71,  -1,  91,  -9, -69,  60, 329, 330, 331,
 365, 366, 367,  40,  61, -36, 123,  40,  41, -71,
  -3, 373, 374,  -1,  -9,-115, 123, 123, 123,  -9,
  -9, 123, -71, 357, 364, 541, 364, -81, -82, -91,
 -25, -26, -27, 275, -13,  40,  -9,  58, 274,  -7,
  91,  -1,  91,  -1,  -9,-161,-165,-158, 310,-165,
-165,-165, -71,-158,  -2,  -9,  40,  40,  41, -71,
  -1,  40, -31, -28,  -6,  -2,  -9, 125, 316, 316,
 466, -31, -66,  -9,  42, -36,  61, -31,  61, -31,
 -31,  61,  61,  -1, 469,  -9, 469,  40,  -1, 469,
-177,  44,  93,  -1, -28, -28,  91,  -9, -36, -83,
  -1,  40,  40,-173, -36,  41,  41,  93,  41,  41,
  41,  41,  41, -12, 263,  44,  58, 390, 329, 330,
 331, 365, 366, 367,  -1, -84, -85, -36, 123, 262,
 -64, -63, -71, 306,  44,  93,  44, 275, -71, -71,
  62,  44,  42,  -5,  -5,  -5,  93, 274,  41, -68,
 -19, -18,  43,  45, 306, 323, 373,  -9, -59, -61,
 -73, 274, -53, -22,  60,  41, 125,-112,-145,-147,
-127, 274,  -7,  91,  -1,  91,  -1, -71, -71,  -1,
 371, 326,  -7, 371, 326,  -1,  41,  44, -28, -25,
  93,  -9,  -3,  -1, -28,  -9,  -9,  44,  93,  -2,
  -9,  -9, -24, 274, -36,  41,  40,  41,  44,  44,
  -2,  -9,  -9,  41,  58,  40,  41,  40,  41,  41,
  40,  40,  -5,  -1,  -9, 317,  -1, -31, -71,  93,
 -38, 479, 504, 505, 506,  -9,  41, 390, -83,  41,
 387, 341, 342, 343, 388, 389, 301, 303, 304, 305,
 391, 394, 294,  -4, 317, -34, -33,-153, 480, 482,
 483, 484, 485, 276, 277, 281, 282, 283, 284, 286,
 287, 257, 279, 290, 291, 292, 293, 486, 487, 488,
 490, 491, 492, 493, 494, 495, 496, 334, 497, 280,
 289, 336, 498, 341, 489, 357, 390, 502, 271, 123,
  -9,  41, -14, -14, -14, -14, -14, -14, 317, 283,
 284, 456, 457, 459,  -9,  -9,  -1,  41,  44,  61,
 -59, 125,  44,  61, 263, 263, -29,  -9,  41,  41,
 -28,  40,  -5,  -1,  62, -58,  -1,  40, -19,  41,
 125, -62, -40,-135, -41, 298, 364, 297, 286, 287,
 284, 283, 282, 281, 293, 292, 291, 290, 279, 278,
 277,-175,  61,  -3,  40,  40,  91, -54, 125, 125,
-150, 423, 424, 425, 426,-120,-132,-133,-135, 125,
-151, 428, 429, 426,-132,-120,-133,-135, 125,  -3,
 -28,  -9,  -9,  44, -93, 450,  -1, -28, -27, -38,
  41, 390, -71,  93,  93, -71, -35,  61, 316, 316,
  41,  41,  -1,  41, -25,  -6,  -6, -66,  41,  -9,
  41,  -3,  40,  93,  93,  93,  93, -36,  41,  58,
  58,  40, -35,  -2,  41,  42,  91, -32,  40, 481,
 501, 277, 281, 282, 283, 284, 280, -20,  40, -20,
 -20, -15, 510, 483, 484, 276, 277, 281, 282, 283,
 284, 286, 287, 279, 290, 291, 292, 293,  42, 486,
 487, 488, 490, 491, 494, 495, 497, 280, 289, 257,
 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
 521, 522, 523, 496, 488, 500,  41,  -2, 263, 263,
  44, -84, -37, -17,  -9, 283, -36, -70, 319, 320,
 125, -64, 123,  61, -25,  -1, -67,  44, -56, -57,
 -71, -65,-135, 358, 363,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91,  40,
  91, 284, 283, 282, 281,  40,  91,  40,  91, -31,
 -36, 123,  40, -53, -22, -25, -25,  -9,  62, -75,
 -75, -75, -75, -75, -75, -75, 509, -71,  93,  93,
 -71,  -1,  -2,  -2, 274,  44, -39, -41, -36, 299,
 286, 287, 284, 283, 282, 281, 279, 293, 292, 291,
 290, 278, 277,  -2,  -9,  41,  58, -89, -69, -34,
 -83, 392, 393, 392, 393,  -9,  93,  -9,  43, 125,
 -36,  91,  91, 503,  44,  91, 524,  38, 281, 282,
 283, 284, 280,  -9,  40,  40, -62, 123,  41, -67,
 -68,  41,  44, -60, -52, 364, 297, 345, 299, 263,
  -9, 306, -70, 299,  -9, -40,  -9, -23,  -9,  -9,
 -23, -24,  -9, -24,  -9,  -9,  -9,  -9,  -9,  -9,
  -9, -24,  -9,  -9,  -9,  -9,  -9,  -9,  -9,  40,
  91,  40,  91,  40,  91,  40,  91,  -9,  -9, -17,
  -9,  41, -59,  40,  40,  41,  41,  93,  -7, 274,
  44,  40,  -3, -71, 284, 283, 282, 281, -66,  40,
  41,  41,  41,  93,  43,  -9,  44,  -9,  -9,  61,
 -36,  93, 263,  -9, 281, 282, 283,  -9, 125, -62,
 -71,  -1,  91, 306, -70,  41,  41,  93, 263,  41,
  41,  93,  41,  93,  41,  41,  93,  41,  41,  93,
  41,  93,  41,  93,  41,  93,  41,  93,  41,  93,
  41,  93,  41,  93,  41,  93, -24,  -9,  -9,  -9,
  -9,  -9,  -9,  -9,  41,  93,  41,  93, 125, -25,
 -25,  62, -28,  -3, -71, -25, -21, -22,  60,  58,
 -25,  -9,  93, -36,  93,  93,  -9,  41,  58,  58,
  58,  41, 125,  61,  93, 263,  40,  41,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  41,  93,  41,  93,  41,  93,  41,  93,  40,  40,
  41,  41, -71, -21,  41,  40, -66,  41,  93,  44,
  41, -33,  41,  -9,  -9,  -9, -40, -49, -50, -51,
 -42, -43, -47, -46, -45, -44, -47, -46, -45, -44,
  40,  40,  40,  40, -45, -48, 274,  40, -35, -25,
 -80, -36,  41,  41,  41,  41, 299, 263,  41, 299,
 306, -70,  41, -40,  41, -23,  -9,  41, -23, -24,
  41, -24,  41,  -9,  41,  -9,  41,  -9,  41,  41,
  41,  41, -47, -46, -45, -44,  41,  41, -17,  -3,
 -25,  41, 123, 324, 379, 380, 381, 308, 382, 383,
 384, 385, 333, 347, 348, 349, 350, 294,  44, 263,
  41,  41,  41,  41,  40,  41,  40, -36, -25, 509,
  -9,  41,  41, 357,  41,  -7, -28, -71, 274,  -3,
 -21,  40, -25,  41 };
YYSTATIC YYCONST short YYFARDATA YYDEF[]={

   1,  -2,   2,   0,   0, 332,   6,   7,   8,   9,
  10,  11,   0,   0,   0,   0,  16,  17,  18,   0,
   0, 771,   0,   0,  24,  25,  26,   0,  28, 135,
   0, 268, 206,   0, 430,   0,   0, 777, 105, 834,
  92,   0, 430,   0,  83,  84,  85,   0,   0,   0,
   0,   0,   0,  57,  58,   0,  60, 108, 261, 386,
   0, 756, 757, 219, 430, 430, 139,   1,   0, 787,
 805, 823, 837,  19,  41,  20,   0,   0,  22,  42,
  43,  23,  29, 137,   0, 104,  38,  39,  36,  37,
 219, 186,   0, 383,   0, 390,   0,   0, 430, 393,
 393, 393, 393, 393, 393,   0,   0, 431, 432,   0,
 759,   0, 777, 813,   0,  93,   0,   0, 741, 742,
 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
 753, 754, 755,   0,   0,  33,   0,   0,   0,   0,
   0,   0, 667,   0,   0, 219,   0, 683, 684,   0,
 688,   0,   0, 548, 232, 550, 551, 552, 553,   0,
 488, 690, 691, 692, 693, 694, 695, 696, 697, 698,
   0, 703, 704, 705, 706, 707, 554,   0,  52,  54,
  55,  56,  59,   0, 385, 387, 388,   0,  61,   0,
  71,   0, 212, 213, 214, 219, 219, 217,   0, 220,
 221,   0,   0,   0,   0,   0,   5, 333,   0, 335,
   0,   0, 339, 340, 341, 342,   0, 344, 345, 346,
 347, 348,   0,   0,   0, 354,   0,   0, 331, 503,
   0,   0,   0,   0, 430,   0, 219,   0,   0,   0,
 219,   0,   0, 332,   0, 489, 490, 491, 492, 493,
 494, 495, 496, 497, 498, 499, 500, 501, 361, 368,
   0,   0,   0,   0,  21, 773, 772,   0,  29, 549,
 107,   0, 136, 556,   0, 559, 219,   0, 310, 269,
 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
 280, 281, 282, 283, 284, 285, 286,   0,   0,   0,
   0,   0, 392,   0,   0,   0,   0, 404,   0,   0,
 405,   0, 406,   0, 407,   0, 408,   0, 409, 429,
 102, 433,   0, 758,   0,   0, 768, 776, 778, 779,
 780,   0, 782, 783, 784, 785, 786,   0,   0, 832,
 835, 836,  94, 717, 718, 719,   0,   0,  31,   0,
   0, 710, 672, 673, 674,   0,   0, 533,   0,   0,
   0,   0, 666,   0, 669, 227,   0,   0, 680, 682,
 685,   0, 687, 689,   0,   0,   0,   0,   0,   0,
 230, 231, 699, 700, 701, 702,   0,  53, 147, 109,
 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124,   0, 131, 132, 133,   0,
   0, 103,   0,   0,  72,  73,   0, 215, 216,   0,
 222, 223, 224, 225,  64,  68,   3, 140, 332,   0,
   0,   0, 168, 169, 170, 171, 172,   0,   0,   0,
   0, 178, 179,   0,   0, 235, 249, 813, 105,   4,
 334, 336,  -2,   0, 343,   0,   0,   0, 219,   0,
   0,   0, 362, 364,   0,   0,   0,   0,   0,   0,
 378, 379, 376, 504, 505, 506, 507, 502, 508, 509,
  44,   0,   0,   0, 511, 512, 513,   0, 516, 517,
 518, 519, 520,   0, 430,   0, 524, 526,   0, 365,
   0,   0,  12, 788,   0, 790, 791, 430,   0,   0,
 430, 798, 799,   0,  13, 806, 430, 808, 430, 810,
   0,   0,  14, 824,   0,   0,   0,   0, 830, 831,
  15, 838,   0,   0, 841, 842, 770, 774,  27,  30,
 138, 142,   0,   0,   0,  40,   0,   0, 291,   0,
 187, 188, 189, 190, 191, 192, 193,   0, 195, 196,
 197, 198, 199, 200,   0, 207, 389,   0,   0,   0,
 397,   0,   0,   0,   0,   0,   0,   0,  96, 761,
   0, 781, 803, 811, 814, 815, 816,   0,   0,   0,
   0,   0, 721, 726, 727,  34,  47, 670,   0, 708,
 711, 712,   0,   0,   0, 534, 535,  48,  49,  50,
  51, 668,   0, 679, 681, 686,   0,   0,   0,   0,
 555,   0,  -2, 710,   0, 106, 154, 125, 126, 127,
 128, 129, 130,   0, 384,  62,  75,  69, 219,   0,
 531, 307, 308,  -2,   0,   0, 139, 238, 252, 173,
 174, 823,   0, 219,   0,   0,   0,   0, 219,   0,
   0, 538, 539, 541,   0,  -2,   0,   0,   0,   0,
   0, 356,   0,   0,   0, 363, 369, 380,   0, 370,
 371, 372, 377, 373, 374, 375,   0,   0, 510,   0,
  -2,   0,   0,   0,   0, 529, 530, 360,   0,   0,
   0,   0,   0, 792, 793, 796,   0,   0,   0,   0,
   0,   0,   0, 825,   0, 829,   0,   0,   0,   0,
 430,   0, 557,   0,   0, 262,   0,   0, 291,   0,
 202, 560,   0, 391,   0, 396, 393, 394, 393, 393,
 393, 393, 393,   0, 760,   0,   0,   0, 817, 818,
 819, 820, 821, 822, 833,   0, 728,   0,  75,  32,
   0, 722,   0,   0,   0, 671, 710, 714,   0,   0,
 678,   0, 673, 544, 545, 546,   0,   0, 226,   0,
   0, 154, 149, 150, 151, 152, 153,   0,   0,  78,
  65,   0,   0,   0, 533, 218, 164,   0,   0,   0,
   0,   0,   0,   0, 181,   0,   0,   0,   0,  -2,
 236, 237,   0, 250, 251, 812, 337, 310, 262,   0,
 349, 351, 352, 309,   0,   0,   0,   0, 204,   0,
   0,   0,   0,   0,   0, 522,  -2, 525, 526, 526,
 366, 367, 789, 794,   0, 802, 797, 800, 807, 809,
 775, 801, 826, 827,   0,   0, 840,   0, 141, 558,
   0,   0,   0,   0,   0,   0, 287,   0,   0, 290,
 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
   0,   0,   0, 204,   0,   0, 264,   0,   0,   0,
 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
 575, 576,   0, 581, 582, 583, 584, 590, 591, 592,
 593, 594, 595, 596, 615, 615, 599, 615, 617, 603,
 605,   0, 607,   0, 609, 611,   0, 613, 614, 266,
   0, 395, 398, 399, 400, 401, 402, 403,   0,  97,
  98,  99, 100, 101, 763, 765, 804, 715,   0,   0,
   0, 720, 721,   0,  37,  35, 709, 713, 675, 676,
 536,  -2, 547, 228, 148,   0, 158, 143, 155, 134,
  63,  74,  76,  77, 437,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 430,   0, 531,  -2,  -2,   0,   0, 165, 166,
 239, 219, 219, 219, 219, 244, 245, 246, 247, 167,
 253, 219, 219, 219, 257, 258, 259, 260, 175,   0,
   0,   0,   0,   0, 184, 219, 233,   0, 540, 542,
 338,   0,   0, 355,   0, 358, 359,   0,   0,   0,
  45,  46, 514, 521,   0, 527, 528,   0, 828, 839,
 773, 147, 560, 311, 312, 313, 314, 291, 289,   0,
   0,   0, 185, 203, 194, 585,   0,   0,   0,   0,
   0, 610, 577, 578, 579, 580, 604, 597,   0, 598,
 600, 601, 618, 619, 620, 621, 622, 623, 624, 625,
 626, 627, 628,   0, 633, 634, 635, 636, 637, 641,
 642, 643, 644, 645, 646, 647, 648, 649, 651, 652,
 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
 663, 664, 665, 606, 608, 612, 201,  95, 762, 764,
   0, 729, 730, 733, 734,   0, 736,   0, 731, 732,
 716, 723,  78,   0,   0, 158, 157, 154,   0, 144,
 145,   0,  80,  81,  82,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  66,  75,  70,   0,   0,   0,   0,   0, 532, 240,
 241, 242, 243, 254, 255, 256, 219,   0, 180,   0,
 183,   0, 543, 350,   0,   0, 205, 434, 435, 436,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 381, 382, 523,   0, 769,   0,   0,
   0, 302, 303, 304, 305,   0, 586,   0,   0, 265,
   0,   0,   0,   0,   0,   0, 639, 640, 629, 630,
 631, 632, 650, 767,   0,   0,   0,  78, 677, 156,
 159, 160,   0,   0,  86,  87,  88,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 428,   0,  -2,  -2, 210, 211,   0,   0,   0,
   0,  -2, 161, 357,   0,   0,   0,   0,   0,  -2,
 263, 288, 306, 587,   0,   0,   0,   0,   0,   0,
 602, 638, 766,   0,   0,   0,   0,   0, 724,   0,
 146,   0,   0,   0,  90, 438, 439,   0,   0, 441,
 442,   0, 443,   0, 410, 412,   0, 411, 413,   0,
 414,   0, 415,   0, 416,   0, 417,   0, 422,   0,
 423,   0, 424,   0, 425,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 426,   0, 427,   0,  67,   0,
   0, 163,   0, 161, 182,   0,   0, 162,   0,   0,
   0,   0, 589,   0, 563, 560,   0, 735,   0,   0,
   0, 740, 725,   0,  91,  89, 479, 440, 482, 486,
 463, 466, 469, 471, 473, 475, 469, 471, 473, 475,
 418,   0, 419,   0, 420,   0, 421,   0, 473, 477,
 208, 209,   0,   0, 204,  -2, 795, 315, 588,   0,
 562, 564, 616,   0,   0,   0,  79,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
 469, 471, 473, 475,   0,   0,   0,  -2, 248,   0,
   0,   0, 737, 738, 739, 460, 480, 481, 461, 483,
   0, 485, 462, 487, 444, 464, 465, 445, 467, 468,
 446, 470, 447, 472, 448, 474, 449, 476, 450, 451,
 452, 453,   0,   0,   0,   0, 458, 459, 478,   0,
   0, 353, 267, 316, 317, 318, 319, 320, 321, 322,
 323, 324, 325, 326, 327, 328, 329,   0,   0, 484,
 454, 455, 456, 457,  -2,   0,   0,   0,   0,   0,
   0, 561, 176, 219, 330,   0,   0,   0,   0, 161,
   0,  -2,   0, 177 };
#ifdef YYRECOVER
YYSTATIC YYCONST short yyrecover[] = {
-1000
};
#endif

/* SCCSWHAT( "@(#)yypars.c	3.1 88/11/16 22:00:49	" ) */
#line 3 "D:\\CodegenMirror\\src\\tools\\devdiv\\x86\\yypars.c"
#if ! defined(YYAPI_PACKAGE)
/*
**  YYAPI_TOKENNAME		: name used for return value of yylex
**	YYAPI_TOKENTYPE		: type of the token
**	YYAPI_TOKENEME(t)	: the value of the token that the parser should see
**	YYAPI_TOKENNONE		: the representation when there is no token
**	YYAPI_VALUENAME		: the name of the value of the token
**	YYAPI_VALUETYPE		: the type of the value of the token (if null, then the value is derivable from the token itself)
**	YYAPI_VALUEOF(v)	: how to get the value of the token.
*/
#define	YYAPI_TOKENNAME		yychar
#define	YYAPI_TOKENTYPE		int
#define	YYAPI_TOKENEME(t)	(t)
#define	YYAPI_TOKENNONE		-1
#define	YYAPI_TOKENSTR(t)	(sprintf_s(yytokbuf, _countof(yytokbuf), "%d", t), yytokbuf)
#define	YYAPI_VALUENAME		yylval
#define	YYAPI_VALUETYPE		YYSTYPE
#define	YYAPI_VALUEOF(v)	(v)
#endif
#if ! defined(YYAPI_CALLAFTERYYLEX)
#define	YYAPI_CALLAFTERYYLEX
#endif

# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

#ifdef YYDEBUG				/* RRR - 10/9/85 */
char yytokbuf[20];
# ifndef YYDBFLG
#  define YYDBFLG (yydebug)
# endif
# define yyprintf(a, b, c, d) if (YYDBFLG) YYPRINT(a, b, c, d)
#else
# define yyprintf(a, b, c, d)
#endif

#ifndef YYPRINT
#define	YYPRINT	printf
#endif

/*	parser for yacc output	*/

#ifdef YYDUMP
int yydump = 1; /* 1 for dumping */
void yydumpinfo(void);
#endif
#ifdef YYDEBUG
YYSTATIC int yydebug = 0; /* 1 for debugging */
#endif
YYSTATIC YYSTYPE yyv[YYMAXDEPTH];	/* where the values are stored */
YYSTATIC short	yys[YYMAXDEPTH];	/* the parse stack */

#if ! defined(YYRECURSIVE)
YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
#if defined(YYAPI_VALUETYPE)
// YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;	 FIX
#endif
YYSTATIC int yynerrs = 0;			/* number of errors */
YYSTATIC short yyerrflag = 0;		/* error recovery flag */
#endif

#ifdef YYRECOVER
/*
**  yyscpy : copy f onto t and return a ptr to the null terminator at the
**  end of t.
*/
YYSTATIC	char	*yyscpy(register char*t, register char*f)
	{
	while(*t = *f++)
		t++;
	return(t);	/*  ptr to the null char  */
	}
#endif

#ifndef YYNEAR
#define YYNEAR
#endif
#ifndef YYPASCAL
#define YYPASCAL
#endif
#ifndef YYLOCAL
#define YYLOCAL
#endif
#if ! defined YYPARSER
#define YYPARSER yyparse
#endif
#if ! defined YYLEX
#define YYLEX yylex
#endif

#if defined(YYRECURSIVE)

	YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
  #if defined(YYAPI_VALUETYPE)
	YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;
  #endif
	YYSTATIC int yynerrs = 0;			/* number of errors */
	YYSTATIC short yyerrflag = 0;		/* error recovery flag */

	YYSTATIC short	yyn;
	YYSTATIC short	yystate = 0;
	YYSTATIC short	*yyps= &yys[-1];
	YYSTATIC YYSTYPE	*yypv= &yyv[-1];
	YYSTATIC short	yyj;
	YYSTATIC short	yym;

#endif

#pragma warning(disable:102)
YYLOCAL YYNEAR YYPASCAL YYPARSER()
{
#if ! defined(YYRECURSIVE)

	register	short	yyn;
	short		yystate, *yyps;
	YYSTYPE		*yypv;
	short		yyj, yym;

	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
	yystate = 0;

#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:6200) // Index '-1' is out of valid index range...for non-stack buffer...
#endif
    yyps= &yys[-1];
    yypv= &yyv[-1];
#ifdef _PREFAST_
#pragma warning(pop)
#endif

#endif

#ifdef YYDUMP
	yydumpinfo();
#endif
 yystack:	 /* put a state and value onto the stack */

#ifdef YYDEBUG
	if(YYAPI_TOKENNAME == YYAPI_TOKENNONE) {
		yyprintf( "state %d, token # '%d'\n", yystate, -1, 0 );
		}
	else {
		yyprintf( "state %d, token # '%s'\n", yystate, YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0 );
		}
#endif
	if( ++yyps > &yys[YYMAXDEPTH] ) {
		yyerror( "yacc stack overflow" );
		return(1);
	}
	*yyps = yystate;
	++yypv;

	*yypv = yyval;

yynewstate:

	yyn = YYPACT[yystate];

	if( yyn <= YYFLAG ) {	/*  simple state, no lookahead  */
		goto yydefault;
	}
	if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {	/*  need a lookahead */
		YYAPI_TOKENNAME = YYLEX();
		YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
	}
	if( ((yyn += YYAPI_TOKENEME(YYAPI_TOKENNAME)) < 0) || (yyn >= YYLAST) ) {
		goto yydefault;
	}
	if( YYCHK[ yyn = YYACT[ yyn ] ] == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {		/* valid shift */
		yyval = YYAPI_VALUEOF(YYAPI_VALUENAME);
		yystate = yyn;
 		yyprintf( "SHIFT: saw token '%s', now in state %4d\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), yystate, 0 );
		YYAPI_TOKENNAME = YYAPI_TOKENNONE;
		if( yyerrflag > 0 ) {
			--yyerrflag;
		}
		goto yystack;
	}

 yydefault:
	/* default state action */

	if( (yyn = YYDEF[yystate]) == -2 ) {
		register	YYCONST short	*yyxi;

		if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {
			YYAPI_TOKENNAME = YYLEX();
			YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
 			yyprintf("LOOKAHEAD: token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0);
		}
/*
**  search exception table, we find a -1 followed by the current state.
**  if we find one, we'll look through terminal,state pairs. if we find
**  a terminal which matches the current one, we have a match.
**  the exception table is when we have a reduce on a terminal.
*/

#if YYOPTTIME
		yyxi = yyexca + yyexcaind[yystate];
		while(( *yyxi != YYAPI_TOKENEME(YYAPI_TOKENNAME) ) && ( *yyxi >= 0 )){
			yyxi += 2;
		}
#else
		for(yyxi = yyexca;
			(*yyxi != (-1)) || (yyxi[1] != yystate);
			yyxi += 2
		) {
			; /* VOID */
			}

		while( *(yyxi += 2) >= 0 ){
			if( *yyxi == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {
				break;
				}
		}
#endif
		if( (yyn = yyxi[1]) < 0 ) {
			return(0);   /* accept */
			}
		}

	if( yyn == 0 ){ /* error */
		/* error ... attempt to resume parsing */

		switch( yyerrflag ){

		case 0:		/* brand new error */
#ifdef YYRECOVER
			{
			register	int		i,j;

			for(i = 0;
				(yyrecover[i] != -1000) && (yystate > yyrecover[i]);
				i += 3
			) {
				;
			}
			if(yystate == yyrecover[i]) {
				yyprintf("recovered, from state %d to state %d on token # %d\n",
						yystate,yyrecover[i+2],yyrecover[i+1]
						);
				j = yyrecover[i + 1];
				if(j < 0) {
				/*
				**  here we have one of the injection set, so we're not quite
				**  sure that the next valid thing will be a shift. so we'll
				**  count it as an error and continue.
				**  actually we're not absolutely sure that the next token
				**  we were supposed to get is the one when j > 0. for example,
				**  for(+) {;} error recovery with yyerrflag always set, stops
				**  after inserting one ; before the +. at the point of the +,
				**  we're pretty sure the caller wants a 'for' loop. without
				**  setting the flag, when we're almost absolutely sure, we'll
				**  give them one, since the only thing we can shift on this
				**  error is after finding an expression followed by a +
				*/
					yyerrflag++;
					j = -j;
					}
				if(yyerrflag <= 1) {	/*  only on first insertion  */
					yyrecerr(YYAPI_TOKENNAME, j);	/*  what was, what should be first */
				}
				yyval = yyeval(j);
				yystate = yyrecover[i + 2];
				goto yystack;
				}
			}
#endif
		yyerror("syntax error");

		yyerrlab:
			++yynerrs;

		case 1:
		case 2: /* incompletely recovered error ... try again */

			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */

			while ( yyps >= yys ) {
			   yyn = YYPACT[*yyps] + YYERRCODE;
			   if( yyn>= 0 && yyn < YYLAST && YYCHK[YYACT[yyn]] == YYERRCODE ){
			      yystate = YYACT[yyn];  /* simulate a shift of "error" */
 				  yyprintf( "SHIFT 'error': now in state %4d\n", yystate, 0, 0 );
			      goto yystack;
			      }
			   yyn = YYPACT[*yyps];

			   /* the current yyps has no shift onn "error", pop stack */

 			   yyprintf( "error recovery pops state %4d, uncovers %4d\n", *yyps, yyps[-1], 0 );
			   --yyps;
			   --yypv;
			   }

			/* there is no state on the stack with an error shift ... abort */

	yyabort:
			return(1);


		case 3:  /* no shift yet; clobber input char */

 			yyprintf( "error recovery discards token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0 );

			if( YYAPI_TOKENEME(YYAPI_TOKENNAME) == 0 ) goto yyabort; /* don't discard EOF, quit */
			YYAPI_TOKENNAME = YYAPI_TOKENNONE;
			goto yynewstate;   /* try again in the same state */
			}
		}

	/* reduction by production yyn */
yyreduce:
		{
		register	YYSTYPE	*yypvt;
		yypvt = yypv;
		yyps -= YYR2[yyn];
		yypv -= YYR2[yyn];
		yyval = yypv[1];
 		yyprintf("REDUCE: rule %4d, popped %2d tokens, uncovered state %4d, ",yyn, YYR2[yyn], *yyps);
		yym = yyn;
		yyn = YYR1[yyn];		/* consult goto table to find next state */
		yyj = YYPGO[yyn] + *yyps + 1;
		if( (yyj >= YYLAST) || (YYCHK[ yystate = YYACT[yyj] ] != -yyn) ) {
			yystate = YYACT[YYPGO[yyn]];
			}
 		yyprintf("goto state %4d\n", yystate, 0, 0);
#ifdef YYDUMP
		yydumpinfo();
#endif
		switch(yym){

case 3:
#line 194 "asmparse.y"
{ PASM->EndClass(); } break;
case 4:
#line 195 "asmparse.y"
{ PASM->EndNameSpace(); } break;
case 5:
#line 196 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                                                  {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                                     PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                                                  PASM->EndMethod(); } break;
case 12:
#line 206 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 13:
#line 207 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 14:
#line 208 "asmparse.y"
{ PASMM->EndComType(); } break;
case 15:
#line 209 "asmparse.y"
{ PASMM->EndManifestRes(); } break;
case 19:
#line 213 "asmparse.y"
{
#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:22011) // Suppress PREFast warning about integer overflow/underflow
#endif
                                                                                  PASM->m_dwSubsystem = yypvt[-0].int32;
#ifdef _PREFAST_
#pragma warning(pop)
#endif
                                                                                } break;
case 20:
#line 223 "asmparse.y"
{ PASM->m_dwComImageFlags = yypvt[-0].int32; } break;
case 21:
#line 224 "asmparse.y"
{ PASM->m_dwFileAlignment = yypvt[-0].int32;
                                                                                  if((yypvt[-0].int32 & (yypvt[-0].int32 - 1))||(yypvt[-0].int32 < 0x200)||(yypvt[-0].int32 > 0x10000))
                                                                                    PASM->report->error("Invalid file alignment, must be power of 2 from 0x200 to 0x10000\n");} break;
case 22:
#line 227 "asmparse.y"
{ PASM->m_stBaseAddress = (ULONGLONG)(*(yypvt[-0].int64)); delete yypvt[-0].int64;
                                                                                  if(PASM->m_stBaseAddress & 0xFFFF)
                                                                                    PASM->report->error("Invalid image base, must be 0x10000-aligned\n");} break;
case 23:
#line 230 "asmparse.y"
{ PASM->m_stSizeOfStackReserve = (size_t)(*(yypvt[-0].int64)); delete yypvt[-0].int64; } break;
case 28:
#line 235 "asmparse.y"
{ PASM->m_fIsMscorlib = TRUE; } break;
case 31:
#line 242 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 32:
#line 243 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 33:
#line 246 "asmparse.y"
{ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLang)); } break;
case 34:
#line 247 "asmparse.y"
{ LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLang));
                                                                                  LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLangVendor));} break;
case 35:
#line 249 "asmparse.y"
{ LPCSTRToGuid(yypvt[-4].string,&(PASM->m_guidLang));
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLangVendor));
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidDoc));} break;
case 36:
#line 254 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 37:
#line 255 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 38:
#line 258 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 39:
#line 259 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 40:
#line 260 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, '.', yypvt[-0].string); } break;
case 41:
#line 263 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 42:
#line 266 "asmparse.y"
{ yyval.int64 = yypvt[-0].int64; } break;
case 43:
#line 267 "asmparse.y"
{ yyval.int64 = neg ? new __int64(yypvt[-0].int32) : new __int64((unsigned)yypvt[-0].int32); } break;
case 44:
#line 270 "asmparse.y"
{ yyval.float64 = yypvt[-0].float64; } break;
case 45:
#line 271 "asmparse.y"
{ float f; *((__int32*) (&f)) = yypvt[-1].int32; yyval.float64 = new double(f); } break;
case 46:
#line 272 "asmparse.y"
{ yyval.float64 = (double*) yypvt[-1].int64; } break;
case 47:
#line 276 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].binstr,yypvt[-0].string); } break;
case 48:
#line 277 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 49:
#line 278 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 50:
#line 279 "asmparse.y"
{ yypvt[-2].cad->tkOwner = 0; PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 51:
#line 280 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 52:
#line 285 "asmparse.y"
{ DefineVar(yypvt[-0].string, NULL); } break;
case 53:
#line 286 "asmparse.y"
{ DefineVar(yypvt[-1].string, yypvt[-0].binstr); } break;
case 54:
#line 287 "asmparse.y"
{ UndefVar(yypvt[-0].string); } break;
case 55:
#line 288 "asmparse.y"
{ SkipToken = !IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 56:
#line 291 "asmparse.y"
{ SkipToken = IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 57:
#line 294 "asmparse.y"
{ if(IfEndif == 1) SkipToken = !SkipToken;} break;
case 58:
#line 295 "asmparse.y"
{ if(IfEndif == 0)
                                                                                    PASM->report->error("Unmatched #endif\n");
                                                                                  else IfEndif--;
                                                                                } break;
case 59:
#line 299 "asmparse.y"
{ _ASSERTE(!"yylex should have dealt with this"); } break;
case 60:
#line 300 "asmparse.y"
{ } break;
case 61:
#line 304 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-0].token, NULL); } break;
case 62:
#line 305 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].token, yypvt[-0].binstr); } break;
case 63:
#line 306 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-4].token, yypvt[-1].binstr); } break;
case 64:
#line 307 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 65:
#line 310 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-2].token, yypvt[-0].token, NULL); } break;
case 66:
#line 311 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-4].token, yypvt[-2].token, yypvt[-0].binstr); } break;
case 67:
#line 313 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-6].token, yypvt[-4].token, yypvt[-1].binstr); } break;
case 68:
#line 314 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 69:
#line 317 "asmparse.y"
{ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 70:
#line 321 "asmparse.y"
{ PASM->m_pCustomDescrList = NULL;
                                                                                  PASM->m_tkCurrentCVOwner = yypvt[-4].token;
                                                                                  yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 71:
#line 326 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 72:
#line 329 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 73:
#line 330 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 74:
#line 334 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                                                  yyval.binstr->appendInt16(nCustomBlobNVPairs);
                                                                                  yyval.binstr->append(yypvt[-0].binstr);
                                                                                  nCustomBlobNVPairs = 0; } break;
case 75:
#line 340 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt16(VAL16(0x0001)); } break;
case 76:
#line 341 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                                                  yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1); } break;
case 77:
#line 343 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 78:
#line 346 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 79:
#line 348 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; yyval.binstr->appendInt8(yypvt[-4].int32);
                                                                                  yyval.binstr->append(yypvt[-3].binstr);
                                                                                  AppendStringWithLength(yyval.binstr,yypvt[-2].string);
                                                                                  yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1);
                                                                                  nCustomBlobNVPairs++; } break;
case 80:
#line 353 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 81:
#line 356 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_FIELD; } break;
case 82:
#line 357 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_PROPERTY; } break;
case 83:
#line 360 "asmparse.y"
{ if(yypvt[-0].cad->tkOwner && !yypvt[-0].cad->tkInterfacePair)
                                                                                    PASM->DefineCV(yypvt[-0].cad);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad); } break;
case 84:
#line 364 "asmparse.y"
{ PASM->DefineCV(yypvt[-0].cad); } break;
case 85:
#line 365 "asmparse.y"
{ CustomDescr* pNew = new CustomDescr(yypvt[-0].tdd->m_pCA);
                                                                                  if(pNew->tkOwner == 0) pNew->tkOwner = PASM->m_tkCurrentCVOwner;
                                                                                  if(pNew->tkOwner)
                                                                                    PASM->DefineCV(pNew);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(pNew); } break;
case 86:
#line 373 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 87:
#line 374 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); } break;
case 88:
#line 375 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } break;
case 89:
#line 376 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,yypvt[-0].string); } break;
case 90:
#line 378 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token)); } break;
case 91:
#line 380 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 92:
#line 385 "asmparse.y"
{ PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } break;
case 93:
#line 386 "asmparse.y"
{ PASMM->SetModuleName(yypvt[-0].string); PASM->m_tkCurrentCVOwner=1; } break;
case 94:
#line 387 "asmparse.y"
{ BinStr* pbs = new BinStr();
                                                                                  unsigned L = (unsigned)strlen(yypvt[-0].string);
                                                                                  memcpy((char*)(pbs->getBuff(L)),yypvt[-0].string,L);
                                                                                  PASM->EmitImport(pbs); delete pbs;} break;
case 95:
#line 394 "asmparse.y"
{ /*PASM->SetDataSection(); PASM->EmitDataLabel($7);*/
                                                                                  PASM->m_VTFList.PUSH(new VTFEntry((USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, yypvt[-0].string)); } break;
case 96:
#line 398 "asmparse.y"
{ yyval.int32 = 0; } break;
case 97:
#line 399 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_32BIT; } break;
case 98:
#line 400 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_64BIT; } break;
case 99:
#line 401 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED; } break;
case 100:
#line 402 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_CALL_MOST_DERIVED; } break;
case 101:
#line 403 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } break;
case 102:
#line 406 "asmparse.y"
{ PASM->m_pVTable = yypvt[-1].binstr; } break;
case 103:
#line 409 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 104:
#line 413 "asmparse.y"
{ PASM->StartNameSpace(yypvt[-0].string); } break;
case 105:
#line 416 "asmparse.y"
{ newclass = TRUE; } break;
case 106:
#line 419 "asmparse.y"
{ if(yypvt[-0].typarlist) FixupConstraints();
                                                                                  PASM->StartClass(yypvt[-1].string, yypvt[-2].classAttr, yypvt[-0].typarlist);
                                                                                  TyParFixupList.RESET(false);
                                                                                  newclass = FALSE;
                                                                                } break;
case 107:
#line 425 "asmparse.y"
{ PASM->AddClass(); } break;
case 108:
#line 428 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) 0; } break;
case 109:
#line 429 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdPublic); } break;
case 110:
#line 430 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdNotPublic); } break;
case 111:
#line 431 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x80000000 | tdSealed); } break;
case 112:
#line 432 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x40000000); } break;
case 113:
#line 433 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdInterface | tdAbstract); } break;
case 114:
#line 434 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSealed); } break;
case 115:
#line 435 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdAbstract); } break;
case 116:
#line 436 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdAutoLayout); } break;
case 117:
#line 437 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdSequentialLayout); } break;
case 118:
#line 438 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdExplicitLayout); } break;
case 119:
#line 439 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAnsiClass); } break;
case 120:
#line 440 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdUnicodeClass); } break;
case 121:
#line 441 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAutoClass); } break;
case 122:
#line 442 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdImport); } break;
case 123:
#line 443 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSerializable); } break;
case 124:
#line 444 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdWindowsRuntime); } break;
case 125:
#line 445 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPublic); } break;
case 126:
#line 446 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPrivate); } break;
case 127:
#line 447 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamily); } break;
case 128:
#line 448 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedAssembly); } break;
case 129:
#line 449 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamANDAssem); } break;
case 130:
#line 450 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamORAssem); } break;
case 131:
#line 451 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdBeforeFieldInit); } break;
case 132:
#line 452 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSpecialName); } break;
case 133:
#line 453 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr); } break;
case 134:
#line 454 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].int32); } break;
case 136:
#line 458 "asmparse.y"
{ PASM->m_crExtends = yypvt[-0].token; } break;
case 141:
#line 469 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 142:
#line 470 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 143:
#line 474 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 144:
#line 475 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 145:
#line 478 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 146:
#line 479 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 147:
#line 482 "asmparse.y"
{ yyval.typarlist = NULL; PASM->m_TyParList = NULL;} break;
case 148:
#line 483 "asmparse.y"
{ yyval.typarlist = yypvt[-1].typarlist;   PASM->m_TyParList = yypvt[-1].typarlist;} break;
case 149:
#line 486 "asmparse.y"
{ yyval.int32 = gpCovariant; } break;
case 150:
#line 487 "asmparse.y"
{ yyval.int32 = gpContravariant; } break;
case 151:
#line 488 "asmparse.y"
{ yyval.int32 = gpReferenceTypeConstraint; } break;
case 152:
#line 489 "asmparse.y"
{ yyval.int32 = gpNotNullableValueTypeConstraint; } break;
case 153:
#line 490 "asmparse.y"
{ yyval.int32 = gpDefaultConstructorConstraint; } break;
case 154:
#line 493 "asmparse.y"
{ yyval.int32 = 0; } break;
case 155:
#line 494 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | yypvt[-0].int32; } break;
case 156:
#line 497 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-3].int32, yypvt[-2].binstr, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 157:
#line 498 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-2].int32, NULL, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 158:
#line 501 "asmparse.y"
{ yyval.typarlist = NULL; } break;
case 159:
#line 502 "asmparse.y"
{ yyval.typarlist = yypvt[-0].typarlist; } break;
case 160:
#line 505 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 161:
#line 508 "asmparse.y"
{ yyval.int32= 0; } break;
case 162:
#line 509 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 163:
#line 512 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32; } break;
case 164:
#line 516 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                              {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                 PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                              PASM->EndMethod(); } break;
case 165:
#line 520 "asmparse.y"
{ PASM->EndClass(); } break;
case 166:
#line 521 "asmparse.y"
{ PASM->EndEvent(); } break;
case 167:
#line 522 "asmparse.y"
{ PASM->EndProp(); } break;
case 173:
#line 528 "asmparse.y"
{ PASM->m_pCurClass->m_ulSize = yypvt[-0].int32; } break;
case 174:
#line 529 "asmparse.y"
{ PASM->m_pCurClass->m_ulPack = yypvt[-0].int32; } break;
case 175:
#line 530 "asmparse.y"
{ PASMM->EndComType(); } break;
case 176:
#line 532 "asmparse.y"
{ BinStr *sig1 = parser->MakeSig(yypvt[-7].int32, yypvt[-6].binstr, yypvt[-1].binstr);
                                                                  BinStr *sig2 = new BinStr(); sig2->append(sig1);
                                                                  PASM->AddMethodImpl(yypvt[-11].token,yypvt[-9].string,sig1,yypvt[-5].token,yypvt[-3].string,sig2);
                                                                  PASM->ResetArgNameList();
                                                                } break;
case 177:
#line 538 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-17].token,yypvt[-15].string,
                                                                      (yypvt[-14].int32==0 ? parser->MakeSig(yypvt[-19].int32,yypvt[-18].binstr,yypvt[-12].binstr) :
                                                                      parser->MakeSig(yypvt[-19].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-18].binstr,yypvt[-12].binstr,yypvt[-14].int32)),
                                                                      yypvt[-6].token,yypvt[-4].string,
                                                                      (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                                      parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32)));
                                                                   PASM->ResetArgNameList();
                                                                 } break;
case 180:
#line 548 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurClass->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 181:
#line 553 "asmparse.y"
{ int n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 182:
#line 559 "asmparse.y"
{ PASM->AddGenericParamConstraint(yypvt[-3].int32, 0, yypvt[-0].token); } break;
case 183:
#line 560 "asmparse.y"
{ PASM->AddGenericParamConstraint(0, yypvt[-2].string, yypvt[-0].token); } break;
case 184:
#line 561 "asmparse.y"
{ yypvt[-0].cad->tkInterfacePair = yypvt[-1].token;
                                                                        if(PASM->m_pCustomDescrList)
                                                                            PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad);
                                                                      } break;
case 185:
#line 569 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                              PASM->AddField(yypvt[-2].string, yypvt[-3].binstr, yypvt[-4].fieldAttr, yypvt[-1].string, yypvt[-0].binstr, yypvt[-5].int32); } break;
case 186:
#line 573 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) 0; } break;
case 187:
#line 574 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdStatic); } break;
case 188:
#line 575 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPublic); } break;
case 189:
#line 576 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivate); } break;
case 190:
#line 577 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamily); } break;
case 191:
#line 578 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdInitOnly); } break;
case 192:
#line 579 "asmparse.y"
{ yyval.fieldAttr = yypvt[-1].fieldAttr; } break;
case 193:
#line 580 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdSpecialName); } break;
case 194:
#line 593 "asmparse.y"
{ PASM->m_pMarshal = yypvt[-1].binstr; } break;
case 195:
#line 594 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdAssembly); } break;
case 196:
#line 595 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamANDAssem); } break;
case 197:
#line 596 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamORAssem); } break;
case 198:
#line 597 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivateScope); } break;
case 199:
#line 598 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdLiteral); } break;
case 200:
#line 599 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdNotSerialized); } break;
case 201:
#line 600 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].int32); } break;
case 202:
#line 603 "asmparse.y"
{ yyval.string = 0; } break;
case 203:
#line 604 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 204:
#line 607 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 205:
#line 608 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 206:
#line 611 "asmparse.y"
{ yyval.int32 = 0xFFFFFFFF; } break;
case 207:
#line 612 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 208:
#line 617 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, parser->MakeSig(yypvt[-8].int32|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 mr = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
                                                                   parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr,
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 209:
#line 634 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
                                                                 parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 210:
#line 640 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr,
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 211:
#line 656 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                               yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 212:
#line 660 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 213:
#line 661 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 214:
#line 662 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 215:
#line 665 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_HASTHIS); } break;
case 216:
#line 666 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } break;
case 217:
#line 667 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 218:
#line 668 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 219:
#line 671 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 220:
#line 672 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 221:
#line 673 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_VARARG; } break;
case 222:
#line 674 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_C; } break;
case 223:
#line 675 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_STDCALL; } break;
case 224:
#line 676 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_THISCALL; } break;
case 225:
#line 677 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_FASTCALL; } break;
case 226:
#line 680 "asmparse.y"
{ yyval.token = yypvt[-1].int32; } break;
case 227:
#line 683 "asmparse.y"
{ yyval.token = yypvt[-0].token;
                                                               PASM->delArgNameList(PASM->m_firstArgName);
                                                               PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                               PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                               PASM->SetMemberRefFixup(yypvt[-0].token,iOpcodeLen); } break;
case 228:
#line 689 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 229:
#line 693 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               yyval.token = PASM->MakeMemberRef(NULL, yypvt[-0].string, yypvt[-1].binstr);
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 230:
#line 696 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 231:
#line 698 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 232:
#line 700 "asmparse.y"
{ yyval.token = yypvt[-0].token;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 233:
#line 705 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, yypvt[-1].token, yypvt[-2].eventAttr); } break;
case 234:
#line 706 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, mdTypeRefNil, yypvt[-1].eventAttr); } break;
case 235:
#line 710 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) 0; } break;
case 236:
#line 711 "asmparse.y"
{ yyval.eventAttr = yypvt[-1].eventAttr; } break;
case 237:
#line 712 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) (yypvt[-1].eventAttr | evSpecialName); } break;
case 240:
#line 719 "asmparse.y"
{ PASM->SetEventMethod(0, yypvt[-0].token); } break;
case 241:
#line 720 "asmparse.y"
{ PASM->SetEventMethod(1, yypvt[-0].token); } break;
case 242:
#line 721 "asmparse.y"
{ PASM->SetEventMethod(2, yypvt[-0].token); } break;
case 243:
#line 722 "asmparse.y"
{ PASM->SetEventMethod(3, yypvt[-0].token); } break;
case 248:
#line 731 "asmparse.y"
{ PASM->ResetProp(yypvt[-4].string,
                                                              parser->MakeSig((IMAGE_CEE_CS_CALLCONV_PROPERTY |
                                                              (yypvt[-6].int32 & IMAGE_CEE_CS_CALLCONV_HASTHIS)),yypvt[-5].binstr,yypvt[-2].binstr), yypvt[-7].propAttr, yypvt[-0].binstr);} break;
case 249:
#line 736 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) 0; } break;
case 250:
#line 737 "asmparse.y"
{ yyval.propAttr = yypvt[-1].propAttr; } break;
case 251:
#line 738 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) (yypvt[-1].propAttr | prSpecialName); } break;
case 254:
#line 746 "asmparse.y"
{ PASM->SetPropMethod(0, yypvt[-0].token); } break;
case 255:
#line 747 "asmparse.y"
{ PASM->SetPropMethod(1, yypvt[-0].token); } break;
case 256:
#line 748 "asmparse.y"
{ PASM->SetPropMethod(2, yypvt[-0].token); } break;
case 261:
#line 756 "asmparse.y"
{ PASM->ResetForNextMethod();
                                                              uMethodBeginLine = PASM->m_ulCurLine;
                                                              uMethodBeginColumn=PASM->m_ulCurColumn;
                                                            } break;
case 262:
#line 762 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 263:
#line 763 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 264:
#line 766 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 265:
#line 767 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 266:
#line 770 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 267:
#line 774 "asmparse.y"
{ BinStr* sig;
                                                              if (yypvt[-5].typarlist == NULL) sig = parser->MakeSig(yypvt[-10].int32, yypvt[-8].binstr, yypvt[-3].binstr);
                                                              else {
                                                               FixupTyPars(yypvt[-8].binstr);
                                                               sig = parser->MakeSig(yypvt[-10].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC, yypvt[-8].binstr, yypvt[-3].binstr, yypvt[-5].typarlist->Count());
                                                               FixupConstraints();
                                                              }
                                                              PASM->StartMethod(yypvt[-6].string, sig, yypvt[-11].methAttr, yypvt[-7].binstr, yypvt[-9].int32, yypvt[-5].typarlist);
                                                              TyParFixupList.RESET(false);
                                                              PASM->SetImplAttr((USHORT)yypvt[-1].implAttr);
                                                              PASM->m_pCurMethod->m_ulLines[0] = uMethodBeginLine;
                                                              PASM->m_pCurMethod->m_ulColumns[0]=uMethodBeginColumn;
                                                            } break;
case 268:
#line 789 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) 0; } break;
case 269:
#line 790 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdStatic); } break;
case 270:
#line 791 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPublic); } break;
case 271:
#line 792 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivate); } break;
case 272:
#line 793 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamily); } break;
case 273:
#line 794 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdFinal); } break;
case 274:
#line 795 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdSpecialName); } break;
case 275:
#line 796 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdVirtual); } break;
case 276:
#line 797 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdCheckAccessOnOverride); } break;
case 277:
#line 798 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdAbstract); } break;
case 278:
#line 799 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdAssem); } break;
case 279:
#line 800 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamANDAssem); } break;
case 280:
#line 801 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamORAssem); } break;
case 281:
#line 802 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivateScope); } break;
case 282:
#line 803 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdHideBySig); } break;
case 283:
#line 804 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdNewSlot); } break;
case 284:
#line 805 "asmparse.y"
{ yyval.methAttr = yypvt[-1].methAttr; } break;
case 285:
#line 806 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdUnmanagedExport); } break;
case 286:
#line 807 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdRequireSecObject); } break;
case 287:
#line 808 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].int32); } break;
case 288:
#line 810 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-4].binstr,0,yypvt[-2].binstr,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-7].methAttr | mdPinvokeImpl); } break;
case 289:
#line 813 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-2].binstr,0,NULL,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-5].methAttr | mdPinvokeImpl); } break;
case 290:
#line 816 "asmparse.y"
{ PASM->SetPinvoke(new BinStr(),0,NULL,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-4].methAttr | mdPinvokeImpl); } break;
case 291:
#line 820 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) 0; } break;
case 292:
#line 821 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmNoMangle); } break;
case 293:
#line 822 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAnsi); } break;
case 294:
#line 823 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetUnicode); } break;
case 295:
#line 824 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAuto); } break;
case 296:
#line 825 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmSupportsLastError); } break;
case 297:
#line 826 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvWinapi); } break;
case 298:
#line 827 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvCdecl); } break;
case 299:
#line 828 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvStdcall); } break;
case 300:
#line 829 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvThiscall); } break;
case 301:
#line 830 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvFastcall); } break;
case 302:
#line 831 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitEnabled); } break;
case 303:
#line 832 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitDisabled); } break;
case 304:
#line 833 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharEnabled); } break;
case 305:
#line 834 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharDisabled); } break;
case 306:
#line 835 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].int32); } break;
case 307:
#line 838 "asmparse.y"
{ yyval.string = newString(COR_CTOR_METHOD_NAME); } break;
case 308:
#line 839 "asmparse.y"
{ yyval.string = newString(COR_CCTOR_METHOD_NAME); } break;
case 309:
#line 840 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 310:
#line 843 "asmparse.y"
{ yyval.int32 = 0; } break;
case 311:
#line 844 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdIn; } break;
case 312:
#line 845 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOut; } break;
case 313:
#line 846 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOptional; } break;
case 314:
#line 847 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 + 1; } break;
case 315:
#line 850 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (miIL | miManaged); } break;
case 316:
#line 851 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miNative); } break;
case 317:
#line 852 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miIL); } break;
case 318:
#line 853 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miOPTIL); } break;
case 319:
#line 854 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miManaged); } break;
case 320:
#line 855 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miUnmanaged); } break;
case 321:
#line 856 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miForwardRef); } break;
case 322:
#line 857 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miPreserveSig); } break;
case 323:
#line 858 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miRuntime); } break;
case 324:
#line 859 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miInternalCall); } break;
case 325:
#line 860 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miSynchronized); } break;
case 326:
#line 861 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoInlining); } break;
case 327:
#line 862 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveInlining); } break;
case 328:
#line 863 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoOptimization); } break;
case 329:
#line 864 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveOptimization); } break;
case 330:
#line 865 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].int32); } break;
case 331:
#line 868 "asmparse.y"
{ PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL;
                                                            } break;
case 334:
#line 876 "asmparse.y"
{ PASM->EmitByte(yypvt[-0].int32); } break;
case 335:
#line 877 "asmparse.y"
{ delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } break;
case 336:
#line 878 "asmparse.y"
{ PASM->EmitMaxStack(yypvt[-0].int32); } break;
case 337:
#line 879 "asmparse.y"
{ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
                                                            } break;
case 338:
#line 881 "asmparse.y"
{ PASM->EmitZeroInit();
                                                              PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
                                                            } break;
case 339:
#line 884 "asmparse.y"
{ PASM->EmitEntryPoint(); } break;
case 340:
#line 885 "asmparse.y"
{ PASM->EmitZeroInit(); } break;
case 343:
#line 888 "asmparse.y"
{ PASM->AddLabel(PASM->m_CurPC,yypvt[-1].string); /*PASM->EmitLabel($1);*/ } break;
case 349:
#line 894 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-1].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = NULL;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-1].int32 + 0x8000;
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 350:
#line 904 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-3].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = yypvt[-0].string;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-3].int32 + 0x8000;
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 351:
#line 914 "asmparse.y"
{ PASM->m_pCurMethod->m_wVTEntry = (WORD)yypvt[-2].int32;
                                                              PASM->m_pCurMethod->m_wVTSlot = (WORD)yypvt[-0].int32; } break;
case 352:
#line 917 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-2].token,yypvt[-0].string,NULL,NULL,NULL,NULL); } break;
case 353:
#line 920 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-6].token,yypvt[-4].string,
                                                              (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                              parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32))
                                                              ,NULL,NULL,NULL);
                                                              PASM->ResetArgNameList();
                                                            } break;
case 355:
#line 927 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurMethod->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 356:
#line 932 "asmparse.y"
{ int n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 357:
#line 938 "asmparse.y"
{ PASM->m_pCurMethod->AddGenericParamConstraint(yypvt[-3].int32, 0, yypvt[-0].token); } break;
case 358:
#line 939 "asmparse.y"
{ PASM->m_pCurMethod->AddGenericParamConstraint(0, yypvt[-2].string, yypvt[-0].token); } break;
case 359:
#line 942 "asmparse.y"
{ if( yypvt[-2].int32 ) {
                                                                ARG_NAME_LIST* pAN=PASM->findArg(PASM->m_pCurMethod->m_firstArgName, yypvt[-2].int32 - 1);
                                                                if(pAN)
                                                                {
                                                                    PASM->m_pCustomDescrList = &(pAN->CustDList);
                                                                    pAN->pValue = yypvt[-0].binstr;
                                                                }
                                                                else
                                                                {
                                                                    PASM->m_pCustomDescrList = NULL;
                                                                    if(yypvt[-0].binstr) delete yypvt[-0].binstr;
                                                                }
                                                              } else {
                                                                PASM->m_pCustomDescrList = &(PASM->m_pCurMethod->m_RetCustDList);
                                                                PASM->m_pCurMethod->m_pRetValue = yypvt[-0].binstr;
                                                              }
                                                              PASM->m_tkCurrentCVOwner = 0;
                                                            } break;
case 360:
#line 962 "asmparse.y"
{ PASM->m_pCurMethod->CloseScope(); } break;
case 361:
#line 965 "asmparse.y"
{ PASM->m_pCurMethod->OpenScope(); } break;
case 365:
#line 976 "asmparse.y"
{ PASM->m_SEHD->tryTo = PASM->m_CurPC; } break;
case 366:
#line 977 "asmparse.y"
{ PASM->SetTryLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 367:
#line 978 "asmparse.y"
{ if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = yypvt[-2].int32;
                                                              PASM->m_SEHD->tryTo = yypvt[-0].int32;} } break;
case 368:
#line 982 "asmparse.y"
{ PASM->NewSEHDescriptor();
                                                              PASM->m_SEHD->tryFrom = PASM->m_CurPC; } break;
case 369:
#line 987 "asmparse.y"
{ PASM->EmitTry(); } break;
case 370:
#line 988 "asmparse.y"
{ PASM->EmitTry(); } break;
case 371:
#line 989 "asmparse.y"
{ PASM->EmitTry(); } break;
case 372:
#line 990 "asmparse.y"
{ PASM->EmitTry(); } break;
case 373:
#line 994 "asmparse.y"
{ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 374:
#line 995 "asmparse.y"
{ PASM->SetFilterLabel(yypvt[-0].string);
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 375:
#line 997 "asmparse.y"
{ PASM->m_SEHD->sehFilter = yypvt[-0].int32;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 376:
#line 1001 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER;
                                                               PASM->m_SEHD->sehFilter = PASM->m_CurPC; } break;
case 377:
#line 1005 "asmparse.y"
{  PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE;
                                                               PASM->SetCatchClass(yypvt[-0].token);
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 378:
#line 1010 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 379:
#line 1014 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 380:
#line 1018 "asmparse.y"
{ PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } break;
case 381:
#line 1019 "asmparse.y"
{ PASM->SetHandlerLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 382:
#line 1020 "asmparse.y"
{ PASM->m_SEHD->sehHandler = yypvt[-2].int32;
                                                               PASM->m_SEHD->sehHandlerTo = yypvt[-0].int32; } break;
case 384:
#line 1028 "asmparse.y"
{ PASM->EmitDataLabel(yypvt[-1].string); } break;
case 386:
#line 1032 "asmparse.y"
{ PASM->SetDataSection(); } break;
case 387:
#line 1033 "asmparse.y"
{ PASM->SetTLSSection(); } break;
case 388:
#line 1034 "asmparse.y"
{ PASM->SetILSection(); } break;
case 393:
#line 1045 "asmparse.y"
{ yyval.int32 = 1; } break;
case 394:
#line 1046 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32;
                                                               if(yypvt[-1].int32 <= 0) { PASM->report->error("Illegal item count: %d\n",yypvt[-1].int32);
                                                                  if(!PASM->OnErrGo) yyval.int32 = 1; }} break;
case 395:
#line 1051 "asmparse.y"
{ PASM->EmitDataString(yypvt[-1].binstr); } break;
case 396:
#line 1052 "asmparse.y"
{ PASM->EmitDD(yypvt[-1].string); } break;
case 397:
#line 1053 "asmparse.y"
{ PASM->EmitData(yypvt[-1].binstr->ptr(),yypvt[-1].binstr->length()); } break;
case 398:
#line 1055 "asmparse.y"
{ float f = (float) (*yypvt[-2].float64); float* p = new (nothrow) float[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i < yypvt[-0].int32; i++) p[i] = f;
                                                                 PASM->EmitData(p, sizeof(float)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(float)*yypvt[-0].int32); } break;
case 399:
#line 1062 "asmparse.y"
{ double* p = new (nothrow) double[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].float64);
                                                                 PASM->EmitData(p, sizeof(double)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(double)*yypvt[-0].int32); } break;
case 400:
#line 1069 "asmparse.y"
{ __int64* p = new (nothrow) __int64[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].int64);
                                                                 PASM->EmitData(p, sizeof(__int64)*yypvt[-0].int32); delete yypvt[-2].int64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int64)*yypvt[-0].int32); } break;
case 401:
#line 1076 "asmparse.y"
{ __int32* p = new (nothrow) __int32[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = yypvt[-2].int32;
                                                                 PASM->EmitData(p, sizeof(__int32)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int32)*yypvt[-0].int32); } break;
case 402:
#line 1083 "asmparse.y"
{ __int16 i = (__int16) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int16* p = new (nothrow) __int16[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int16)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int16)*yypvt[-0].int32); } break;
case 403:
#line 1091 "asmparse.y"
{ __int8 i = (__int8) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int8* p = new (nothrow) __int8[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int8)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int8)*yypvt[-0].int32); } break;
case 404:
#line 1098 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(float)*yypvt[-0].int32); } break;
case 405:
#line 1099 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(double)*yypvt[-0].int32); } break;
case 406:
#line 1100 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int64)*yypvt[-0].int32); } break;
case 407:
#line 1101 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int32)*yypvt[-0].int32); } break;
case 408:
#line 1102 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int16)*yypvt[-0].int32); } break;
case 409:
#line 1103 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int8)*yypvt[-0].int32); } break;
case 410:
#line 1107 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
                                                               float f = (float)(*yypvt[-1].float64);
                                                               yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-1].float64; } break;
case 411:
#line 1110 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].float64); delete yypvt[-1].float64; } break;
case 412:
#line 1112 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 413:
#line 1114 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 414:
#line 1116 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 415:
#line 1118 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 416:
#line 1120 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 417:
#line 1122 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 418:
#line 1124 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 419:
#line 1126 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 420:
#line 1128 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 421:
#line 1130 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 422:
#line 1132 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 423:
#line 1134 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 424:
#line 1136 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 425:
#line 1138 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 426:
#line 1140 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 427:
#line 1142 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32);} break;
case 428:
#line 1144 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-1].binstr;} break;
case 429:
#line 1148 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 430:
#line 1151 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 431:
#line 1152 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 432:
#line 1155 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = new BinStr(); yyval.binstr->appendInt8(i); } break;
case 433:
#line 1156 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(i); } break;
case 434:
#line 1160 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 435:
#line 1161 "asmparse.y"
{ yyval.binstr = BinStrToUnicode(yypvt[-0].binstr,true); yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);} break;
case 436:
#line 1162 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CLASS);
                                                               yyval.binstr->appendInt32(0); } break;
case 437:
#line 1167 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 438:
#line 1168 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); yyval.binstr->appendInt8(0xFF); } break;
case 439:
#line 1169 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 440:
#line 1171 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 441:
#line 1173 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-1].token));} break;
case 442:
#line 1175 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); yyval.binstr->appendInt8(0xFF); } break;
case 443:
#line 1176 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} break;
case 444:
#line 1178 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 445:
#line 1182 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 446:
#line 1186 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 447:
#line 1190 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 448:
#line 1194 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 449:
#line 1198 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 450:
#line 1202 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 451:
#line 1206 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 452:
#line 1210 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 453:
#line 1214 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 454:
#line 1218 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 455:
#line 1222 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 456:
#line 1226 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 457:
#line 1230 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 458:
#line 1234 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_CHAR);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 459:
#line 1238 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_BOOLEAN);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 460:
#line 1242 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 461:
#line 1246 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TYPE);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 462:
#line 1250 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 463:
#line 1256 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 464:
#line 1257 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               float f = (float) (*yypvt[-0].float64); yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-0].float64; } break;
case 465:
#line 1259 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 466:
#line 1263 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 467:
#line 1264 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].float64); delete yypvt[-0].float64; } break;
case 468:
#line 1266 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 469:
#line 1270 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 470:
#line 1271 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 471:
#line 1275 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 472:
#line 1276 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt32(yypvt[-0].int32);} break;
case 473:
#line 1279 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 474:
#line 1280 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt16(yypvt[-0].int32);} break;
case 475:
#line 1283 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 476:
#line 1284 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 477:
#line 1287 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 478:
#line 1288 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt8(yypvt[-0].int32);} break;
case 479:
#line 1292 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 480:
#line 1293 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 481:
#line 1294 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 482:
#line 1298 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 483:
#line 1299 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 484:
#line 1300 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr;
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 485:
#line 1302 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token));} break;
case 486:
#line 1306 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 487:
#line 1307 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 488:
#line 1311 "asmparse.y"
{ parser->m_ANSFirst.PUSH(PASM->m_firstArgName);
                                                               parser->m_ANSLast.PUSH(PASM->m_lastArgName);
                                                               PASM->m_firstArgName = NULL;
                                                               PASM->m_lastArgName = NULL; } break;
case 489:
#line 1317 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 490:
#line 1320 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 491:
#line 1323 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 492:
#line 1326 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 493:
#line 1329 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 494:
#line 1332 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 495:
#line 1335 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode);
                                                               if((!PASM->OnErrGo)&&
                                                               ((yypvt[-0].opcode == CEE_NEWOBJ)||
                                                                (yypvt[-0].opcode == CEE_CALLVIRT)))
                                                                  iCallConv = IMAGE_CEE_CS_CALLCONV_HASTHIS;
                                                             } break;
case 496:
#line 1343 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 497:
#line 1346 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 498:
#line 1349 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 499:
#line 1352 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 500:
#line 1355 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); iOpcodeLen = PASM->OpcodeLen(yyval.instr); } break;
case 501:
#line 1358 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 502:
#line 1361 "asmparse.y"
{ yyval.instr = yypvt[-1].instr; bParsingByteArray = TRUE; } break;
case 503:
#line 1365 "asmparse.y"
{ PASM->EmitOpcode(yypvt[-0].instr); } break;
case 504:
#line 1366 "asmparse.y"
{ PASM->EmitInstrVar(yypvt[-1].instr, yypvt[-0].int32); } break;
case 505:
#line 1367 "asmparse.y"
{ PASM->EmitInstrVarByName(yypvt[-1].instr, yypvt[-0].string); } break;
case 506:
#line 1368 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].int32); } break;
case 507:
#line 1369 "asmparse.y"
{ PASM->EmitInstrI8(yypvt[-1].instr, yypvt[-0].int64); } break;
case 508:
#line 1370 "asmparse.y"
{ PASM->EmitInstrR(yypvt[-1].instr, yypvt[-0].float64); delete (yypvt[-0].float64);} break;
case 509:
#line 1371 "asmparse.y"
{ double f = (double) (*yypvt[-0].int64); PASM->EmitInstrR(yypvt[-1].instr, &f); } break;
case 510:
#line 1372 "asmparse.y"
{ unsigned L = yypvt[-1].binstr->length();
                                                               FAIL_UNLESS(L >= sizeof(float), ("%d hexbytes, must be at least %d\n",
                                                                           L,sizeof(float)));
                                                               if(L < sizeof(float)) {YYERROR; }
                                                               else {
                                                                   double f = (L >= sizeof(double)) ? *((double *)(yypvt[-1].binstr->ptr()))
                                                                                    : (double)(*(float *)(yypvt[-1].binstr->ptr()));
                                                                   PASM->EmitInstrR(yypvt[-2].instr,&f); }
                                                               delete yypvt[-1].binstr; } break;
case 511:
#line 1381 "asmparse.y"
{ PASM->EmitInstrBrOffset(yypvt[-1].instr, yypvt[-0].int32); } break;
case 512:
#line 1382 "asmparse.y"
{ PASM->EmitInstrBrTarget(yypvt[-1].instr, yypvt[-0].string); } break;
case 513:
#line 1384 "asmparse.y"
{ PASM->SetMemberRefFixup(yypvt[-0].token,PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iCallConv = 0;
                                                             } break;
case 514:
#line 1391 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               mdToken mr = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-4].instr));
                                                               PASM->EmitInstrI(yypvt[-4].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 515:
#line 1399 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               mdToken mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-0].string, yypvt[-1].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-2].instr));
                                                               PASM->EmitInstrI(yypvt[-2].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 516:
#line 1406 "asmparse.y"
{ mdToken mr = yypvt[-0].token;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 517:
#line 1412 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 518:
#line 1418 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 519:
#line 1424 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 520:
#line 1428 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-1].instr, yypvt[-0].binstr,TRUE); } break;
case 521:
#line 1430 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-4].instr, yypvt[-1].binstr,FALSE); } break;
case 522:
#line 1432 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-3].instr, yypvt[-1].binstr,FALSE,TRUE); } break;
case 523:
#line 1434 "asmparse.y"
{ PASM->EmitInstrSig(yypvt[-5].instr, parser->MakeSig(yypvt[-4].int32, yypvt[-3].binstr, yypvt[-1].binstr));
                                                               PASM->ResetArgNameList();
                                                             } break;
case 524:
#line 1438 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iOpcodeLen = 0;
                                                             } break;
case 525:
#line 1443 "asmparse.y"
{ PASM->EmitInstrSwitch(yypvt[-3].instr, yypvt[-1].labels); } break;
case 526:
#line 1446 "asmparse.y"
{ yyval.labels = 0; } break;
case 527:
#line 1447 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-2].string, yypvt[-0].labels, TRUE); } break;
case 528:
#line 1448 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-2].int32, yypvt[-0].labels, FALSE); } break;
case 529:
#line 1449 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-0].string, NULL, TRUE); } break;
case 530:
#line 1450 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-0].int32, NULL, FALSE); } break;
case 531:
#line 1454 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 532:
#line 1455 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 533:
#line 1458 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 534:
#line 1459 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 535:
#line 1462 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 536:
#line 1463 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 537:
#line 1467 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 538:
#line 1468 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr;} break;
case 539:
#line 1471 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 540:
#line 1472 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 541:
#line 1475 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_SENTINEL); } break;
case 542:
#line 1476 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-1].binstr); PASM->addArgName(NULL, yypvt[-1].binstr, yypvt[-0].binstr, yypvt[-2].int32); } break;
case 543:
#line 1477 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-2].binstr); PASM->addArgName(yypvt[-0].string, yypvt[-2].binstr, yypvt[-1].binstr, yypvt[-3].int32);} break;
case 544:
#line 1481 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetAsmRef(yypvt[-2].string), yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 545:
#line 1482 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(yypvt[-2].token, yypvt[-0].string, NULL); } break;
case 546:
#line 1483 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(mdTokenNil, yypvt[-0].string, NULL); } break;
case 547:
#line 1484 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetModRef(yypvt[-2].string),yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 548:
#line 1485 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(1,yypvt[-0].string,NULL); } break;
case 549:
#line 1486 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 550:
#line 1487 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 551:
#line 1488 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) yyval.token = PASM->m_pCurClass->m_cl;
                                                                else { yyval.token = 0; PASM->report->error(".this outside class scope\n"); }
                                                              } break;
case 552:
#line 1491 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  yyval.token = PASM->m_pCurClass->m_crExtends;
                                                                  if(RidFromToken(yyval.token) == 0)
                                                                    PASM->report->error(".base undefined\n");
                                                                } else { yyval.token = 0; PASM->report->error(".base outside class scope\n"); }
                                                              } break;
case 553:
#line 1497 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  if(PASM->m_pCurClass->m_pEncloser != NULL) yyval.token = PASM->m_pCurClass->m_pEncloser->m_cl;
                                                                  else { yyval.token = 0; PASM->report->error(".nester undefined\n"); }
                                                                } else { yyval.token = 0; PASM->report->error(".nester outside class scope\n"); }
                                                              } break;
case 554:
#line 1504 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 555:
#line 1505 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, NESTING_SEP, yypvt[-0].string); } break;
case 556:
#line 1508 "asmparse.y"
{ yyval.token = yypvt[-0].token;} break;
case 557:
#line 1509 "asmparse.y"
{ yyval.token = PASM->GetAsmRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 558:
#line 1510 "asmparse.y"
{ yyval.token = PASM->GetModRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 559:
#line 1511 "asmparse.y"
{ yyval.token = PASM->ResolveTypeSpec(yypvt[-0].binstr); } break;
case 560:
#line 1515 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 561:
#line 1517 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,yypvt[-7].binstr->length()); yyval.binstr->append(yypvt[-7].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-5].binstr->length()); yyval.binstr->append(yypvt[-5].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr);
                                                                PASM->report->warn("Deprecated 4-string form of custom marshaler, first two strings ignored\n");} break;
case 562:
#line 1524 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr); } break;
case 563:
#line 1529 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 564:
#line 1532 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32); yyval.binstr->append(yypvt[-0].binstr); } break;
case 565:
#line 1534 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANT);
                                                                PASM->report->warn("Deprecated native type 'variant'\n"); } break;
case 566:
#line 1536 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CURRENCY); } break;
case 567:
#line 1537 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SYSCHAR);
                                                                PASM->report->warn("Deprecated native type 'syschar'\n"); } break;
case 568:
#line 1539 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VOID);
                                                                PASM->report->warn("Deprecated native type 'void'\n"); } break;
case 569:
#line 1541 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BOOLEAN); } break;
case 570:
#line 1542 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I1); } break;
case 571:
#line 1543 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I2); } break;
case 572:
#line 1544 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I4); } break;
case 573:
#line 1545 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I8); } break;
case 574:
#line 1546 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R4); } break;
case 575:
#line 1547 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R8); } break;
case 576:
#line 1548 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ERROR); } break;
case 577:
#line 1549 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 578:
#line 1550 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 579:
#line 1551 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 580:
#line 1552 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 581:
#line 1553 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 582:
#line 1554 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 583:
#line 1555 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 584:
#line 1556 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 585:
#line 1557 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(NATIVE_TYPE_PTR);
                                                                PASM->report->warn("Deprecated native type '*'\n"); } break;
case 586:
#line 1559 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY); } break;
case 587:
#line 1561 "asmparse.y"
{ yyval.binstr = yypvt[-3].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32);
                                                                corEmitInt(yyval.binstr,0); } break;
case 588:
#line 1566 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32);
                                                                corEmitInt(yyval.binstr,yypvt[-3].int32);
                                                                corEmitInt(yyval.binstr,ntaSizeParamIndexSpecified); } break;
case 589:
#line 1571 "asmparse.y"
{ yyval.binstr = yypvt[-4].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 590:
#line 1574 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DECIMAL);
                                                                PASM->report->warn("Deprecated native type 'decimal'\n"); } break;
case 591:
#line 1576 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DATE);
                                                                PASM->report->warn("Deprecated native type 'date'\n"); } break;
case 592:
#line 1578 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BSTR); } break;
case 593:
#line 1579 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTR); } break;
case 594:
#line 1580 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPWSTR); } break;
case 595:
#line 1581 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPTSTR); } break;
case 596:
#line 1582 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_OBJECTREF);
                                                                PASM->report->warn("Deprecated native type 'objectref'\n"); } break;
case 597:
#line 1584 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IUNKNOWN);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 598:
#line 1586 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IDISPATCH);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 599:
#line 1588 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_STRUCT); } break;
case 600:
#line 1589 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INTF);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 601:
#line 1591 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-0].int32);
                                                                corEmitInt(yyval.binstr,0);} break;
case 602:
#line 1594 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32);
                                                                corEmitInt(yyval.binstr,yypvt[-0].binstr->length()); yyval.binstr->append(yypvt[-0].binstr); } break;
case 603:
#line 1598 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INT); } break;
case 604:
#line 1599 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 605:
#line 1600 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 606:
#line 1601 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_NESTEDSTRUCT);
                                                                PASM->report->warn("Deprecated native type 'nested struct'\n"); } break;
case 607:
#line 1603 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BYVALSTR); } break;
case 608:
#line 1604 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ANSIBSTR); } break;
case 609:
#line 1605 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_TBSTR); } break;
case 610:
#line 1606 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANTBOOL); } break;
case 611:
#line 1607 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FUNC); } break;
case 612:
#line 1608 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ASANY); } break;
case 613:
#line 1609 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTRUCT); } break;
case 614:
#line 1610 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 615:
#line 1613 "asmparse.y"
{ yyval.int32 = -1; } break;
case 616:
#line 1614 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 617:
#line 1617 "asmparse.y"
{ yyval.int32 = VT_EMPTY; } break;
case 618:
#line 1618 "asmparse.y"
{ yyval.int32 = VT_NULL; } break;
case 619:
#line 1619 "asmparse.y"
{ yyval.int32 = VT_VARIANT; } break;
case 620:
#line 1620 "asmparse.y"
{ yyval.int32 = VT_CY; } break;
case 621:
#line 1621 "asmparse.y"
{ yyval.int32 = VT_VOID; } break;
case 622:
#line 1622 "asmparse.y"
{ yyval.int32 = VT_BOOL; } break;
case 623:
#line 1623 "asmparse.y"
{ yyval.int32 = VT_I1; } break;
case 624:
#line 1624 "asmparse.y"
{ yyval.int32 = VT_I2; } break;
case 625:
#line 1625 "asmparse.y"
{ yyval.int32 = VT_I4; } break;
case 626:
#line 1626 "asmparse.y"
{ yyval.int32 = VT_I8; } break;
case 627:
#line 1627 "asmparse.y"
{ yyval.int32 = VT_R4; } break;
case 628:
#line 1628 "asmparse.y"
{ yyval.int32 = VT_R8; } break;
case 629:
#line 1629 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 630:
#line 1630 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 631:
#line 1631 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 632:
#line 1632 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 633:
#line 1633 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 634:
#line 1634 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 635:
#line 1635 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 636:
#line 1636 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 637:
#line 1637 "asmparse.y"
{ yyval.int32 = VT_PTR; } break;
case 638:
#line 1638 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32 | VT_ARRAY; } break;
case 639:
#line 1639 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_VECTOR; } break;
case 640:
#line 1640 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_BYREF; } break;
case 641:
#line 1641 "asmparse.y"
{ yyval.int32 = VT_DECIMAL; } break;
case 642:
#line 1642 "asmparse.y"
{ yyval.int32 = VT_DATE; } break;
case 643:
#line 1643 "asmparse.y"
{ yyval.int32 = VT_BSTR; } break;
case 644:
#line 1644 "asmparse.y"
{ yyval.int32 = VT_LPSTR; } break;
case 645:
#line 1645 "asmparse.y"
{ yyval.int32 = VT_LPWSTR; } break;
case 646:
#line 1646 "asmparse.y"
{ yyval.int32 = VT_UNKNOWN; } break;
case 647:
#line 1647 "asmparse.y"
{ yyval.int32 = VT_DISPATCH; } break;
case 648:
#line 1648 "asmparse.y"
{ yyval.int32 = VT_SAFEARRAY; } break;
case 649:
#line 1649 "asmparse.y"
{ yyval.int32 = VT_INT; } break;
case 650:
#line 1650 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 651:
#line 1651 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 652:
#line 1652 "asmparse.y"
{ yyval.int32 = VT_ERROR; } break;
case 653:
#line 1653 "asmparse.y"
{ yyval.int32 = VT_HRESULT; } break;
case 654:
#line 1654 "asmparse.y"
{ yyval.int32 = VT_CARRAY; } break;
case 655:
#line 1655 "asmparse.y"
{ yyval.int32 = VT_USERDEFINED; } break;
case 656:
#line 1656 "asmparse.y"
{ yyval.int32 = VT_RECORD; } break;
case 657:
#line 1657 "asmparse.y"
{ yyval.int32 = VT_FILETIME; } break;
case 658:
#line 1658 "asmparse.y"
{ yyval.int32 = VT_BLOB; } break;
case 659:
#line 1659 "asmparse.y"
{ yyval.int32 = VT_STREAM; } break;
case 660:
#line 1660 "asmparse.y"
{ yyval.int32 = VT_STORAGE; } break;
case 661:
#line 1661 "asmparse.y"
{ yyval.int32 = VT_STREAMED_OBJECT; } break;
case 662:
#line 1662 "asmparse.y"
{ yyval.int32 = VT_STORED_OBJECT; } break;
case 663:
#line 1663 "asmparse.y"
{ yyval.int32 = VT_BLOB_OBJECT; } break;
case 664:
#line 1664 "asmparse.y"
{ yyval.int32 = VT_CF; } break;
case 665:
#line 1665 "asmparse.y"
{ yyval.int32 = VT_CLSID; } break;
case 666:
#line 1669 "asmparse.y"
{ if(yypvt[-0].token == PASM->m_tkSysString)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); }
                                                                else if(yypvt[-0].token == PASM->m_tkSysObject)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); }
                                                                else
                                                                 yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CLASS, yypvt[-0].token); } break;
case 667:
#line 1675 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); } break;
case 668:
#line 1676 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 669:
#line 1677 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 670:
#line 1678 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 671:
#line 1679 "asmparse.y"
{ yyval.binstr = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, yypvt[-3].binstr, yypvt[-1].binstr); } break;
case 672:
#line 1680 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_BYREF); } break;
case 673:
#line 1681 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PTR); } break;
case 674:
#line 1682 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PINNED); } break;
case 675:
#line 1683 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 676:
#line 1685 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 677:
#line 1688 "asmparse.y"
{ yyval.binstr = parser->MakeSig(yypvt[-5].int32, yypvt[-4].binstr, yypvt[-1].binstr);
                                                                yyval.binstr->insertInt8(ELEMENT_TYPE_FNPTR);
                                                                PASM->delArgNameList(PASM->m_firstArgName);
                                                                PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                                PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                              } break;
case 678:
#line 1694 "asmparse.y"
{ if(yypvt[-1].binstr == NULL) yyval.binstr = yypvt[-3].binstr;
                                                                else {
                                                                  yyval.binstr = new BinStr();
                                                                  yyval.binstr->appendInt8(ELEMENT_TYPE_GENERICINST);
                                                                  yyval.binstr->append(yypvt[-3].binstr);
                                                                  corEmitInt(yyval.binstr, corCountArgs(yypvt[-1].binstr));
                                                                  yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-3].binstr; delete yypvt[-1].binstr; }} break;
case 679:
#line 1701 "asmparse.y"
{ //if(PASM->m_pCurMethod)  {
                                                                //  if(($3 < 0)||((DWORD)$3 >= PASM->m_pCurMethod->m_NumTyPars))
                                                                //    PASM->report->error("Invalid method type parameter '%d'\n",$3);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_MVAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
                                                                //} else PASM->report->error("Method type parameter '%d' outside method scope\n",$3);
                                                              } break;
case 680:
#line 1707 "asmparse.y"
{ //if(PASM->m_pCurClass)  {
                                                                //  if(($2 < 0)||((DWORD)$2 >= PASM->m_pCurClass->m_NumTyPars))
                                                                //    PASM->report->error("Invalid type parameter '%d'\n",$2);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
                                                                //} else PASM->report->error("Type parameter '%d' outside class scope\n",$2);
                                                              } break;
case 681:
#line 1713 "asmparse.y"
{ int eltype = ELEMENT_TYPE_MVAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurMethod) n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_MVARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid method type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
                                                              } break;
case 682:
#line 1728 "asmparse.y"
{ int eltype = ELEMENT_TYPE_VAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurClass && !newclass) n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_VARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
                                                              } break;
case 683:
#line 1743 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } break;
case 684:
#line 1744 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VOID); } break;
case 685:
#line 1745 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I); } break;
case 686:
#line 1746 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 687:
#line 1747 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 688:
#line 1748 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 689:
#line 1749 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SENTINEL); } break;
case 690:
#line 1752 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); } break;
case 691:
#line 1753 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); } break;
case 692:
#line 1754 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); } break;
case 693:
#line 1755 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); } break;
case 694:
#line 1756 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); } break;
case 695:
#line 1757 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); } break;
case 696:
#line 1758 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); } break;
case 697:
#line 1759 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); } break;
case 698:
#line 1760 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); } break;
case 699:
#line 1761 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 700:
#line 1762 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 701:
#line 1763 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 702:
#line 1764 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 703:
#line 1765 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 704:
#line 1766 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 705:
#line 1767 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 706:
#line 1768 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 707:
#line 1769 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 708:
#line 1772 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 709:
#line 1773 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yypvt[-2].binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 710:
#line 1776 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 711:
#line 1777 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 712:
#line 1778 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0); yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 713:
#line 1779 "asmparse.y"
{ FAIL_UNLESS(yypvt[-2].int32 <= yypvt[-0].int32, ("lower bound %d must be <= upper bound %d\n", yypvt[-2].int32, yypvt[-0].int32));
                                                                if (yypvt[-2].int32 > yypvt[-0].int32) { YYERROR; };
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-2].int32); yyval.binstr->appendInt32(yypvt[-0].int32-yypvt[-2].int32+1); } break;
case 714:
#line 1782 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-1].int32); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
case 715:
#line 1787 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-4].secAct, yypvt[-3].token, yypvt[-1].pair); } break;
case 716:
#line 1789 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-5].secAct, yypvt[-4].token, yypvt[-1].binstr); } break;
case 717:
#line 1790 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-1].secAct, yypvt[-0].token, (NVPair *)NULL); } break;
case 718:
#line 1791 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-2].secAct, yypvt[-1].binstr); } break;
case 719:
#line 1793 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-1].secAct,BinStrToUnicode(yypvt[-0].binstr,true));} break;
case 720:
#line 1795 "asmparse.y"
{ BinStr* ret = new BinStr();
                                                                ret->insertInt8('.');
                                                                corEmitInt(ret, nSecAttrBlobs);
                                                                ret->append(yypvt[-1].binstr);
                                                                PASM->AddPermissionSetDecl(yypvt[-4].secAct,ret);
                                                                nSecAttrBlobs = 0; } break;
case 721:
#line 1803 "asmparse.y"
{ yyval.binstr = new BinStr(); nSecAttrBlobs = 0;} break;
case 722:
#line 1804 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; nSecAttrBlobs = 1; } break;
case 723:
#line 1805 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); nSecAttrBlobs++; } break;
case 724:
#line 1809 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(PASM->ReflectionNotation(yypvt[-4].token),yypvt[-1].binstr,nCustomBlobNVPairs);
                                                                nCustomBlobNVPairs = 0; } break;
case 725:
#line 1812 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(yypvt[-4].string,yypvt[-1].binstr,nCustomBlobNVPairs);
                                                                nCustomBlobNVPairs = 0; } break;
case 726:
#line 1816 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 727:
#line 1818 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 728:
#line 1821 "asmparse.y"
{ yyval.pair = yypvt[-0].pair; } break;
case 729:
#line 1822 "asmparse.y"
{ yyval.pair = yypvt[-2].pair->Concat(yypvt[-0].pair); } break;
case 730:
#line 1825 "asmparse.y"
{ yypvt[-2].binstr->appendInt8(0); yyval.pair = new NVPair(yypvt[-2].binstr, yypvt[-0].binstr); } break;
case 731:
#line 1828 "asmparse.y"
{ yyval.int32 = 1; } break;
case 732:
#line 1829 "asmparse.y"
{ yyval.int32 = 0; } break;
case 733:
#line 1832 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_BOOLEAN);
                                                                yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 734:
#line 1835 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 735:
#line 1838 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 736:
#line 1841 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_STRING);
                                                                yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr;
                                                                yyval.binstr->appendInt8(0); } break;
case 737:
#line 1845 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(1);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 738:
#line 1851 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(2);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 739:
#line 1857 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 740:
#line 1863 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-3].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 741:
#line 1871 "asmparse.y"
{ yyval.secAct = dclRequest; } break;
case 742:
#line 1872 "asmparse.y"
{ yyval.secAct = dclDemand; } break;
case 743:
#line 1873 "asmparse.y"
{ yyval.secAct = dclAssert; } break;
case 744:
#line 1874 "asmparse.y"
{ yyval.secAct = dclDeny; } break;
case 745:
#line 1875 "asmparse.y"
{ yyval.secAct = dclPermitOnly; } break;
case 746:
#line 1876 "asmparse.y"
{ yyval.secAct = dclLinktimeCheck; } break;
case 747:
#line 1877 "asmparse.y"
{ yyval.secAct = dclInheritanceCheck; } break;
case 748:
#line 1878 "asmparse.y"
{ yyval.secAct = dclRequestMinimum; } break;
case 749:
#line 1879 "asmparse.y"
{ yyval.secAct = dclRequestOptional; } break;
case 750:
#line 1880 "asmparse.y"
{ yyval.secAct = dclRequestRefuse; } break;
case 751:
#line 1881 "asmparse.y"
{ yyval.secAct = dclPrejitGrant; } break;
case 752:
#line 1882 "asmparse.y"
{ yyval.secAct = dclPrejitDenied; } break;
case 753:
#line 1883 "asmparse.y"
{ yyval.secAct = dclNonCasDemand; } break;
case 754:
#line 1884 "asmparse.y"
{ yyval.secAct = dclNonCasLinkDemand; } break;
case 755:
#line 1885 "asmparse.y"
{ yyval.secAct = dclNonCasInheritance; } break;
case 756:
#line 1889 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } break;
case 757:
#line 1890 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } break;
case 758:
#line 1893 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 759:
#line 1896 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-0].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1); } break;
case 760:
#line 1898 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-3].int32;
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 761:
#line 1901 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-2].int32;
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);} break;
case 762:
#line 1904 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-5].int32;
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 763:
#line 1908 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-4].int32;
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 764:
#line 1911 "asmparse.y"
{ PENV->nExtLine = yypvt[-5].int32; PENV->nExtLineEnd = yypvt[-3].int32;
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 765:
#line 1915 "asmparse.y"
{ PENV->nExtLine = yypvt[-4].int32; PENV->nExtLineEnd = yypvt[-2].int32;
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
case 766:
#line 1918 "asmparse.y"
{ PENV->nExtLine = yypvt[-7].int32; PENV->nExtLineEnd = yypvt[-5].int32;
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 767:
#line 1922 "asmparse.y"
{ PENV->nExtLine = yypvt[-6].int32; PENV->nExtLineEnd = yypvt[-4].int32;
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 768:
#line 1924 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32 - 1;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].binstr);} break;
case 769:
#line 1931 "asmparse.y"
{ PASMM->AddFile(yypvt[-5].string, yypvt[-6].fileAttr|yypvt[-4].fileAttr|yypvt[-0].fileAttr, yypvt[-2].binstr); } break;
case 770:
#line 1932 "asmparse.y"
{ PASMM->AddFile(yypvt[-1].string, yypvt[-2].fileAttr|yypvt[-0].fileAttr, NULL); } break;
case 771:
#line 1935 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 772:
#line 1936 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) (yypvt[-1].fileAttr | ffContainsNoMetaData); } break;
case 773:
#line 1939 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 774:
#line 1940 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0x80000000; } break;
case 775:
#line 1943 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 776:
#line 1946 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, (DWORD)yypvt[-1].asmAttr, FALSE); } break;
case 777:
#line 1949 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) 0; } break;
case 778:
#line 1950 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afRetargetable); } break;
case 779:
#line 1951 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afContentType_WindowsRuntime); } break;
case 780:
#line 1952 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afPA_NoPlatform); } break;
case 781:
#line 1953 "asmparse.y"
{ yyval.asmAttr = yypvt[-2].asmAttr; } break;
case 782:
#line 1954 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_MSIL); } break;
case 783:
#line 1955 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_x86); } break;
case 784:
#line 1956 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_AMD64); } break;
case 785:
#line 1957 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM); } break;
case 786:
#line 1958 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM64); } break;
case 789:
#line 1965 "asmparse.y"
{ PASMM->SetAssemblyHashAlg(yypvt[-0].int32); } break;
case 792:
#line 1970 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 793:
#line 1971 "asmparse.y"
{ yyval.int32 = 0xFFFF; } break;
case 794:
#line 1974 "asmparse.y"
{ PASMM->SetAssemblyPublicKey(yypvt[-1].binstr); } break;
case 795:
#line 1976 "asmparse.y"
{ PASMM->SetAssemblyVer((USHORT)yypvt[-6].int32, (USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, (USHORT)yypvt[-0].int32); } break;
case 796:
#line 1977 "asmparse.y"
{ yypvt[-0].binstr->appendInt8(0); PASMM->SetAssemblyLocale(yypvt[-0].binstr,TRUE); } break;
case 797:
#line 1978 "asmparse.y"
{ PASMM->SetAssemblyLocale(yypvt[-1].binstr,FALSE); } break;
case 800:
#line 1983 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 801:
#line 1986 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 802:
#line 1989 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 803:
#line 1993 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, yypvt[-1].asmAttr, TRUE); } break;
case 804:
#line 1995 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-2].string, yypvt[-0].string, yypvt[-3].asmAttr, TRUE); } break;
case 807:
#line 2002 "asmparse.y"
{ PASMM->SetAssemblyHashBlob(yypvt[-1].binstr); } break;
case 809:
#line 2004 "asmparse.y"
{ PASMM->SetAssemblyPublicKeyToken(yypvt[-1].binstr); } break;
case 810:
#line 2005 "asmparse.y"
{ PASMM->SetAssemblyAutodetect(); } break;
case 811:
#line 2008 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr);} break;
case 812:
#line 2011 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr); } break;
case 813:
#line 2014 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) 0; } break;
case 814:
#line 2015 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdNotPublic); } break;
case 815:
#line 2016 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdPublic); } break;
case 816:
#line 2017 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdForwarder); } break;
case 817:
#line 2018 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPublic); } break;
case 818:
#line 2019 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPrivate); } break;
case 819:
#line 2020 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamily); } break;
case 820:
#line 2021 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedAssembly); } break;
case 821:
#line 2022 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamANDAssem); } break;
case 822:
#line 2023 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamORAssem); } break;
case 825:
#line 2030 "asmparse.y"
{ PASMM->SetComTypeFile(yypvt[-0].string); } break;
case 826:
#line 2031 "asmparse.y"
{ PASMM->SetComTypeComType(yypvt[-0].string); } break;
case 827:
#line 2032 "asmparse.y"
{ PASMM->SetComTypeAsmRef(yypvt[-0].string); } break;
case 828:
#line 2033 "asmparse.y"
{ if(!PASMM->SetComTypeImplementationTok(yypvt[-1].int32))
                                                                  PASM->report->error("Invalid implementation of exported type\n"); } break;
case 829:
#line 2035 "asmparse.y"
{ if(!PASMM->SetComTypeClassTok(yypvt[-0].int32))
                                                                  PASM->report->error("Invalid TypeDefID of exported type\n"); } break;
case 832:
#line 2041 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-0].string, yypvt[-0].string, yypvt[-1].manresAttr); } break;
case 833:
#line 2043 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-2].string, yypvt[-0].string, yypvt[-3].manresAttr); } break;
case 834:
#line 2046 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) 0; } break;
case 835:
#line 2047 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPublic); } break;
case 836:
#line 2048 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPrivate); } break;
case 839:
#line 2055 "asmparse.y"
{ PASMM->SetManifestResFile(yypvt[-2].string, (ULONG)yypvt[-0].int32); } break;
case 840:
#line 2056 "asmparse.y"
{ PASMM->SetManifestResAsmRef(yypvt[-0].string); } break;/* End of actions */
#line 329 "D:\\CodegenMirror\\src\\tools\\devdiv\\x86\\yypars.c"
			}
		}
		goto yystack;  /* stack new state and value */
	}
#pragma warning(default:102)


#ifdef YYDUMP
YYLOCAL void YYNEAR YYPASCAL yydumpinfo(void)
{
	short stackindex;
	short valindex;

	//dump yys
	printf("short yys[%d] {\n", YYMAXDEPTH);
	for (stackindex = 0; stackindex < YYMAXDEPTH; stackindex++){
		if (stackindex)
			printf(", %s", stackindex % 10 ? "\0" : "\n");
		printf("%6d", yys[stackindex]);
		}
	printf("\n};\n");

	//dump yyv
	printf("YYSTYPE yyv[%d] {\n", YYMAXDEPTH);
	for (valindex = 0; valindex < YYMAXDEPTH; valindex++){
		if (valindex)
			printf(", %s", valindex % 5 ? "\0" : "\n");
		printf("%#*x", 3+sizeof(YYSTYPE), yyv[valindex]);
		}
	printf("\n};\n");
	}
#endif
